Hallo, wow vielen Dank für die Antworten.
Also zunächst mal, ich hatte Notepad++ benutzt und ich denke, dass das schon in der Lage sein sollte mit der Unix-Formatierung umzugehen. Aber wenn man, wie ich, nicht so viel Ahnung hat, wie man das richtig einstellt, passiert es ganz schnell, dass man am Ende viele Fehlermeldungen bekommt. Inzwischen meine ich aber, es herausgefunden zu haben.
Die Anmerkung, den Zwischenstand nicht ständig in eine Datei schreiben, ist ein sehr guter Einwand, den ich nicht bedacht habe. Allerdings finde ich, das Speichern ausschließlich bei Neustart zu veranlassen auch keine gute Lösung, denn so wird dann in Zukunft vielleicht wirklich öfter einfach der Stecker gezogen um das zu umgehen und das kann es ja auch nicht sein. Ich habe mich für einen Mittelweg entschlossen, bei dem nur alle x-Minuten gespeichert wird, und auch nur ab dann, wenn Firefox mindestens einmal geöffnet wurde.
Danke auch für die Mühe einen verbesserten Code zu schreiben, sieht wirklich sehr kompakt aus. Allerdings muss ich zugeben, kaum zu verstehen was darin vor sich geht. Runtime was?... Warum ist die Sleeptime geringer, das sorgt doch für mehr Durchläufe... Wäre es möglich den Code etwas näher zu beschreiben?
Das wichtigste ist aber folgender Punkt: seahawk1986 schrieb:
In welchem Kontext soll das denn laufen? Wenn es nur für einen bestimmten User gelten soll (der brav genug ist, dass er die Ausführung des Skripts nicht unterbricht), würde ich das in seinen Autostart stecken. Als "Kindersicherung" würde ich es eher als root starten - dafür könnte man z.B. eine Systemd/Unit /etc/systemd/system/ff_watchdog.service nutzen:
1 2 3 4 5 6 7 8 [Unit] Description=kill firefox if it has been running far too long [Service] ExecStart=/usr/local/bin/ff_watchdog # this file must be executable! [Install] WantedBy=graphical.targetUnd die muss man dann noch aktivieren und einmalig starten (passiert dann ab dem nächsten Boot-Vorgang automatisch):
sudo systemctl enable ff_watchdog.service sudo systemctl start ff_watchdog.serviceDa das Skript nicht prüft, welcher Nutzer den Firefox ausführt, kumuliert sich natürlich die nicht-überlappende Laufzeit aller Firefox-Prozesse.
Habe ich das richtig verstanden, dass ich in deinem Beispiel mein Batch Skript in ff_watchdog umbenenne (kein .sh mehr dahinter?) und ihn in den Ordner /usr/local/bin packe (vorher noch chmod drüber laufen lassen)? Dann noch in den Ordner /etc/systemd/system/ die Datei ff_watchdog.service anlege und diese mit dem von dir vorgeschlagenem Inhalt fülle?
Es handelt sich zwar um einen 1-Benutzer Computer, aber aus Interessehalber: Wie schreibt man denn in dem Fall neben der Abfrage des Programms selbst (if [ "$(pidof $Programname)") auch noch die Abfrage um wessen Benutzer es sich handelt?