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

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.


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.