Posso limitare il runtime di un cronjob


8

Ho un cronjob che funziona ogni ora che a volte richiede troppo tempo per essere eseguito, c'è un modo per impostare un tempo di esecuzione massimo e il lavoro viene ucciso se lo supera?

Questo è su un server Ubuntu 10.04.

Grazie jebw

Risposte:


11

Prova il timeoutcomando. Per esempio:

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

invierà un SIGINT al tuo comando se non è stato completato in 59 minuti.


Buone informazioni Hai perso '-s', ma è "timeout -s 2 3540 <comando>".
Fish Monitor

Quello installato tramite apt su Ubuntu usa la sintassi che ho citato:usage: timeout [-signal] time command...
Cakemox

Cosa offre 'dpkg -S bin / timeout'? In effetti il ​​mio proviene da coreutils ed è puro GNU.
Fish Monitor

timeout: /usr/bin/timeout
Cakemox,

10.04, uguale all'OP.
Cakemox,

0

No. Il modo in cui lo facciamo è creare uno script con un file di blocco e fare in modo che lo script controlli quel file di blocco prima di riavviarlo, quindi può verificare se è già in esecuzione e decidere se è in esecuzione, se attende che l'altro lo faccia fine o se uccide l'altro prima di correre.

Un file di blocco è solo un file vuoto o un file con l'altro script PIDsalvato da qualche parte come /var/runo /var/lock.


0

la risposta di cakemox è la migliore. Altrimenti, basta inserire il file pid in un file o usare killall su un altro cronjob un minuto prima per terminare il processo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.