Zeitlimit für Cron-Jobs festlegen

11

Unterstützt Ubuntu Linux Cron (Vixie Cron?) Das Festlegen eines Zeitlimits für seine Jobs?

Insbesondere würde der Prozess nach X Sekunden abgebrochen, sofern er bis dahin nicht erfolgreich abgeschlossen wurde.

Ich hatte einige Fälle, in denen Aufgaben aufgrund von Netzwerkkonnektivität und verschiedenen Problemen hängen blieben. Der Prozess bleibt für immer hängen, es sei denn, Sie bereinigen und töten sie manuell.

Mikko Ohtamaa
quelle

Antworten:

26

Unter Ubuntu existiert das Befehls- Timeout , das Teil von coreutils ist. Sie können es so verwenden, um eine Zeitüberschreitung festzulegen. Ältere Versionen von Debian / Ubuntu haben diesen Befehl nicht erstellt und enthalten, aber es gibt ein vergleichbares timeoutPaket, das Sie installieren können.

# puppet shouldn't take more then 40 minutes!
47 * * * * root /usr/bin/timeout 2400 /usr/bin/puppet agent ...
Zoredache
quelle
3
Die Dauer kann auch ein Suffix haben ("s" für Sekunden, "m" für Minuten, "h" für Stunden und "d" für Tage). Zur besseren Lesbarkeit könnte das Obige auch als 47 * * * * root / usr / bin / timeout 40m / usr / bin /
Puppenagent geschrieben werden
Nein, das kann es nicht. Zumindest nicht mit der Implementierung, die ich beim Schreiben dieser Frage hatte. Die neue Version in coreutils hat das Suffix s. Die Version, die ich auf älteren Debian-Systemen hatte, tat es nicht.
Zoredache
-2

Ich denke nicht, dass das möglich ist. Sie müssen den Check in Ihre Anwendung einbauen.

Neil H. Watson
quelle