Puis-je limiter la durée d'exécution d'un cronjob

8

J'ai un cronjob qui s'exécute toutes les heures et qui prend parfois trop de temps à exécuter, est-il possible de définir un temps d'exécution maximal et le travail est tué s'il dépasse cela?

C'est sur un serveur Ubuntu 10.04.

Merci, jebw

jebw
la source

Réponses:

11

Essayez la timeoutcommande. Par exemple:

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

enverra un SIGINT à votre commande s'il ne s'est pas terminé dans 59 minutes.

Cakemox
la source
Bonne info. Vous avez manqué '-s', mais c'est "timeout -s 2 3540 <command>".
Fish Monitor
Celui installé via apt sur ubuntu utilise la syntaxe que j'ai mentionnée:usage: timeout [-signal] time command...
Cakemox
Que donne 'dpkg -S bin / timeout'? En fait, le mien est de coreutils et est pur GNUish.
Fish Monitor
timeout: /usr/bin/timeout
Cakemox du
10.04, identique à l'OP.
Cakemox
0

Nan. La façon dont nous le faisons est de créer un script avec un fichier de verrouillage et de faire vérifier ce fichier de verrouillage avant de recommencer, afin qu'il puisse vérifier s'il est déjà en cours d'exécution et décider s'il s'exécute, s'il attend que l'autre fin ou s'il tue l'autre avant de courir.

Un fichier de verrouillage est simplement un fichier vide ou un fichier avec l'autre script PIDenregistré quelque part comme /var/runou /var/lock.

coredump
la source
0

la réponse de cakemox est la meilleure. Sinon, mettez simplement le pid dans un fichier ou utilisez killall sur un autre cronjob une minute plus tôt pour tuer le processus.

Sirex
la source