Kann ich die Laufzeit eines Cronjobs begrenzen?


8

Ich habe einen Cronjob, der stündlich ausgeführt wird und gelegentlich zu lange dauert. Gibt es eine Möglichkeit, eine maximale Laufzeit festzulegen, und der Job wird beendet, wenn er diesen Wert überschreitet?

Dies ist auf einem Ubuntu 10.04-Server.

Danke, jebw

Antworten:


11

Versuchen Sie den timeoutBefehl. Zum Beispiel:

0 * * * * timeout -2 3540 /path/to/your_command.sh

sendet ein SIGINT an Ihren Befehl, wenn es in 59 Minuten nicht abgeschlossen ist.


Gute Infos. Sie haben '-s' verpasst, aber es ist "timeout -s 2 3540 <Befehl>".
Fisch - Monitor

Die über apt auf Ubuntu installierte verwendet die von mir erwähnte Syntax:usage: timeout [-signal] time command...
Cakemox

Was gibt 'dpkg -S bin / timeout'? Tatsächlich stammt meine aus Coreutils und ist reines GNUish.
Fisch - Monitor

timeout: /usr/bin/timeout
Cakemox

10.04, wie beim OP.
Cakemox

0

Nee. Die Art und Weise, wie wir dies tun, besteht darin, ein Skript mit einer Sperrdatei zu erstellen und das Skript für diese Sperrdatei überprüfen zu lassen, bevor es erneut ausgeführt wird, damit es überprüfen kann, ob es bereits ausgeführt wird, und entscheiden kann, ob es ausgeführt wird, wenn es darauf wartet, dass das andere ausgeführt wird Ende oder wenn es den anderen vor dem Laufen tötet.

Eine Sperrdatei ist nur eine leere Datei oder eine Datei, in der das andere Skript PIDirgendwo wie /var/runoder gespeichert ist /var/lock.


0

Die Antwort von cakemox ist die beste. Andernfalls legen Sie die PID einfach in eine Datei oder verwenden Sie killall für einen weiteren Cronjob eine Minute zuvor, um den Vorgang abzubrechen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.