Seite 1 von 1
Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Sonntag 18. August 2013, 14:33
von mutetella
Hallo,
ich werkel gerade an einem Skript, das nach einer vorgegebenen Zeit den PC abschaltet. Damit auch nach einem PC-Absturz die verstrichene Zeit gesichert bleibt, schreibe ich diese 5-sekündlich auf Platte/SSD.
Gäbe es eine Alternative um diese vielen Schreibvorgänge zu umgehen? Oder ist das egal?
mutetella
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 06:56
von snafu
Die vielen Schreibvorgänge sind an sich nichts Schlimmes. Du könntest jedoch alternativ zum Start des Countdowns einmalig die Zielzeit errechnen, zu der sich der Rechner abschalten soll (z.B. `now() + timedelta(hours=2)`) und diese Zielzeit in eine Datei schreiben. So kann dann auch nach einem ungewollten Aussetzer ermittelt werden, wann der Computer sich ursprünglich abschalten sollte und dieses Ziel dann quasi weiter verfolgt werden. Oder ist es so gemeint, dass die Dauer zwischen Absturz und Wiedereinschalten hinten drangehangen werden soll?
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 07:34
von mutetella
snafu hat geschrieben:Oder ist es so gemeint, dass die Dauer zwischen Absturz und Wiedereinschalten hinten drangehangen werden soll?
Ja. Nur die Zeit, zu der der Computer auch eingeschaltet ist, soll berücksichtigt werden. Es geht darum, dass täglich eine bestimmte Zeit zur Verfügung steht, während derer der PC genutzt werden kann.
mutetella
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 07:45
von BlackJack
@mutetella: Und in diese Zeit kannst Du Abstürze nicht einfach auch einberechnen? Ich meine, wie oft kommt den so ein hoffentlich Ausnahmefall denn vor?
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 08:32
von mutetella
@BlackJack: Wenn nach dem Absturz gleich wieder gestartet wird, ist das sicher kein Problem. Wenn der PC aber ordentlich heruntergefahren oder in einen Suspend-Mode gesetzt wird, dann soll die Zeit erst wieder nach einem erneuten hochfahren bzw. WakeUp gemessen werden. Suspend Zeiten ließen sich vielleicht ja noch mit einem `pm-utils` Skript lösen, die eingeloggte Zeit mit `uptime` auslesen, aber wenn der PC eben heruntergefahren wird oder abstürzt, habe ich Lücken.
Das ist auch der Grund, weshalb ich ein eigenes Skript schreibe(n muss). Darin wird innerhalb einer Schleife die Zeit gemessen. Tritt ein Suspend-Mode ein, bleibt ja auch die Schleife stehen. Wird der PC heruntergefahren oder stürzt ab, benötige ich nach einem Neustart eben die verstrichene Zeit. Und diese muss laufend geschrieben werden, da sich ein Absturz oder Herunterfahren ja nicht abfangen lässt.
mutetella
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 08:52
von BlackJack
@mutetella: Herunterfahren lässt sich „abfangen”. Programme werden dabei ja beendet, und wenn das Programm beendet wird, sollte es auch noch schnell die Zeit „notieren” können.
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 09:42
von snafu
BlackJack hat geschrieben:@mutetella: Herunterfahren lässt sich „abfangen”. Programme werden dabei ja beendet, und wenn das Programm beendet wird, sollte es auch noch schnell die Zeit „notieren” können.
Ich verweise diesbezüglich mal auf
atexit.
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 10:47
von mutetella
Ok, das ist ja schon mal 'ne Hilfe, danke!
Wenn wir schon dabei sind: Ich konnte bisher noch nichts finden, mittels dessen sich ein `kill $pid` abfangen ließe. Nachdem `signal.signal()` unter anderen ein `SIGKILL` nicht akzeptiert möchte ich fast glauben, dass es auch nicht möglich ist...?
mutetella
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 10:55
von BlackJack
@mutetella: ``kill $pid`` sendet ein SIGTERM. Ein SIGKILL kann man in der Tat nicht abfangen. Das ist ja auch der Sinn davon, das man für den absoluten Ernstfall eine Möglichkeit hat einen Prozess zu beenden *ohne* dass der etwas dagegen unternehmen kann. SIGKILL sollte man deshalb auch nicht leichtfertig verwenden sondern erst wenn mindestens ein SIGTERM, und eine angemessene Zeit um darauf zu reagieren, nichts gebracht hat.
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 18:46
von mutetella
@BlackJack: Der
Unterschwied zwischen SIGTERM und SIGKILL war mir nicht bewusst. Gut, dass wir darüber geredet haben...
mutetella
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 21:46
von jerch
Wenn ich mal raten darf - Du willst den Kiddies die Computerzeit beschränken?

Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 22:19
von mutetella
@jerch: "Beschränken" ist so ein böses Wort...

Allerdings gibt es neben dem Computer noch Dinge,
"
... die 0,0 interessant sind und überhaupt kein Mensch jemals brauchen wird ..." (o-ton Junior).
Ich bin nicht naiv genug zu glauben, durch eine Reglementierung der Computerzeit würde automatisch die Einsicht, sich mit vermeintlich unwichtigen Dingen zu beschäftigen, steigen. Allerdings bin ich auch nicht verantwortungslos genug, den Computer unkontrolliert laufen lassen zu können.
Nachdem mein Junior sein System inzwischen ganz ordentlich überschaut und zumindest Prozesse aufspüren und abschießen kann besteht für mich die Herausforderung darin, mein Skript so weit als möglich abzusichern und ihm ein wenig voraus zu sein...
mutetella
P. S.: Um ehrlich zu sein, dieses kleine Katz' und Maus Spiel macht uns beiden auch ordentlich Spaß...
Re: Zeitkonto: Verstrichene Zeit schreiben...
Verfasst: Montag 19. August 2013, 22:51
von jerch
Haha, na dann werd ich evtl Fallstricke nicht weiter ausführen
Nur eine Frage dazu - klemmst Du auch USB-Buchsen ab?
Und das KILL Problem lässt sich mit entsprechenden Userrechten zumindest eindämmen (User kann keinen Rootprozess killen)