Définition du délai d'expiration des tâches cron

11

Ubuntu Linux cron (Vixie cron?) Prend-il en charge la définition du délai d'expiration pour ses travaux?

Plus précisément, le processus serait tué après X secondes, à moins qu'il ne se termine avec succès d'ici là.

J'ai eu quelques cas où des tâches ont été suspendues en raison de la connectivité réseau et de divers problèmes. Le processus est suspendu pour toujours, sauf si vous les nettoyez et les tuez manuellement.

Mikko Ohtamaa
la source

Réponses:

26

Sur Ubuntu, le délai de commande existe, ce qui fait partie de coreutils. Vous pouvez l'utiliser comme ceci pour définir un délai d'expiration. Les anciennes versions de Debian / Ubuntu n'ont pas construit et inclus cette commande, mais il existe un timeoutpaquet comparable que vous pouvez installer.

# puppet shouldn't take more then 40 minutes!
47 * * * * root /usr/bin/timeout 2400 /usr/bin/puppet agent ...
Zoredache
la source
3
La durée peut également avoir un suffixe ("s" pour les secondes, "m" pour les minutes, "h" pour les heures et "d" pour les jours). Donc, pour une meilleure lisibilité, ce qui précède pourrait également être écrit comme 47 * * * * root / usr / bin / timeout 40m / usr / bin / puppet agent ...
smoove666
Non ça ne peut pas. du moins pas avec l'implémentation que j'avais lors de l'écriture de cette question. La nouvelle version dans coreutils a le suffixe s. La version que j'avais sur les anciens systèmes Debian ne le faisait pas.
Zoredache
-2

Je ne pense pas que ce soit possible. Vous devrez intégrer le chèque dans votre application.

Neil H Watson
la source