Uptime liczone podczas hibernacji?
Prowadzę sobie projekt sysinfo project. Sprawa jest prosta. Odpalasz aplikację, która wysyła co 15 minut uptime Twojego komputera. I oto wczoraj zgłoszono błąd:
Wiec tak na dzien dobry dosc powazny problem odkryty czystym przypadkiem - jak oszukac uptime.
Kazdy zna taka magiczna opcje hibernacji systemu, prawdaz?
W latwy spsosob za pomoca Hib. mozna oszukac rzeczywisty uptime systemu, gdyz w przypadku windowsa bedacego w hibernacji liczy sie czas Hib jako uptime.
Przykladem niech bedzie moje drugie konto w celu ukazania problemu: Rurek:) Lap 9 d 5 godz 54 min 15 sek
Laptop ow ciagle jest trzymany w stanie Hib gdy nikt na nim nic nie robi. W rzeczywistosci moze windows pochodzil z 10h lacznie... ale nie 9 dni!
I jak się okazało w trakcie hibernacji system Windows dalej sobie liczy czas pracy (uptime). sic!
I teraz myślę jak obejść ten problem....
Nie można wymusić w skrypcie logowania danych na serwerze by odstęp między aktualizacjami nie był większy niż X czasy, a jeśli jest to uznajemy, że system się zahibernował.. Czemu? Ponieważ nie zawsze mamy połączenie z Internetem, serwer padnie i inne warunki losowe, ewentualnie ktoś wyłączył aplikację.
Kolejnym pomysłem było przed każdym wysłaniem zapisywanie w systemie znacznika czasu wysłania danych. Aplikacja by sprawdzała kiedy ostatni raz coś wysyłała i podejmowała odpowiednie kroki. np. odejmowała od uptime czas hibernacji. No, ale tu powstaje kolejny problem. Wyłączamy aplikację, hibernujemy system a potem po powstaniu lecimy dalej i wysyłamy duży uptime....
Zatem co robić? :) Ciekawe czy uptime liczy się również jak zahibernujemy jakiegoś Linuksa.
31 stycznia 2007, 11:04:51
Komentarze
No to chyba jakiś żart. Z jakiej racji systemy liczą uptime skoro nie pracują? :/ Takim sposobem to mogę zrobić sobie zaraz X lat na byle systemie ;/
czyzby nadszedł taki czas kiedy sysinfo oprze sie o NTP?
NTP? Network Time Protocol? A jakim cudem chcesz to zrobić? Jak aplikacja ma się komunikować ze światem jak ona śpi? :) Tutaj raczej potrzebne będzie rozwiązanie offlinowe ;)
Powered by Jogger. Copyright © 2002-2003 Justin Mecham & JabberPL Group
Licencja: Creative Commons Uznanie autorstwa 3.0





Na Linuksie też się tak samo z hibernacją liczy; pracowałem sobie kiedyś od popołudnia do wieczora, potem hibernacja i tak kilka dni z rzędu… a potem patrzę i się dziwię jakim cudem w ciągu 4 dni mi się zebrało 3x więcej uptime niż laptop był włączony…
Więc musisz to załatwić po stronie serwera raczej – bo po stronie klienta jednak tak czy inaczej łatwiej oszukiwać ;)