La raison la plus fréquente pour laquelle j'ai vu le programme cron échouer était mal programmée. Il faut de la pratique pour spécifier un travail planifié pour 23h15 sous la forme 30 23 * * *
au lieu de * * 11 15 *
ou 11 15 * * *
. Le jour de la semaine pour les emplois après minuit est également confus. M-F est 2-6
après minuit et non pas 1-5
. Les dates spécifiques sont généralement un problème car nous les utilisons rarement. * * 3 1 *
n'est pas le 3 mars.
Si vous travaillez avec différentes plates-formes en utilisant des options non prises en charge telles que 2/3
, les spécifications temporelles peuvent également entraîner des échecs. C'est une option très utile mais non disponible universellement. J'ai également rencontré des problèmes tels que 1-5
ou 1,3,5
.
L’utilisation de chemins non qualifiés a également causé des problèmes. Le chemin par défaut est généralement /bin:/usr/bin
, de sorte que seules les commandes standard seront exécutées. Ces répertoires n'ont généralement pas la commande souhaitée. Cela affecte également les scripts utilisant des commandes non standard. D'autres variables d'environnement peuvent également être manquantes.
Le brouillage total d’une crontab existante m’a causé des problèmes. Je charge maintenant à partir d'une copie de fichier. Cela peut être récupéré à partir de la crontab existante en utilisant crontab -l
si elle est bouchée. Je garde la copie de crontab dans ~ / bin. Il est commenté tout au long et se termine par la ligne # EOF
. Ceci est rechargé quotidiennement à partir d'une entrée de crontab telle que:
#!/usr/bin/crontab
# Reload this crontab
#
54 12 * * * ${HOME}/bin/crontab
La commande de rechargement ci-dessus repose sur une crontab exécutable avec un chemin bang exécutant crontab. Certains systèmes requièrent l'exécution de la commande crontab dans la commande et la spécification du fichier. Si le répertoire est partagé sur le réseau, j'utilise souvent crontab.$(hostname)
comme nom du fichier. Cela corrigera éventuellement les cas où la mauvaise crontab est chargée sur le mauvais serveur.
L'utilisation du fichier fournit une sauvegarde de ce que devrait être la crontab, et permet aux modifications temporaires (la seule fois où j'utilise crontab -e
) d'être automatiquement sauvegardées. Des en-têtes sont disponibles pour vous aider à définir correctement les paramètres de planification. Je les ai ajoutés lorsque des utilisateurs inexpérimentés éditaient une crontab.
Rarement, j'ai rencontré des commandes nécessitant la saisie de l'utilisateur. Celles-ci échouent sous crontab, bien que certaines fonctionnent avec la redirection d’entrée.