J'ai un problème avec une tâche cron qui démarre mais ne se termine pas. L'exécution manuelle de la commande fonctionne correctement. J'ai déjà lu la page sur les problèmes et solutions cron ici sur AskUbuntu, j'ai essayé les solutions proposées mais je n'ai pas trouvé de réponse qui fonctionne dans mon cas.
J'utilise Ubuntu 12.04.
$ crontab -e
Shell=/bin/bash # otherwise it would be /bin/sh
59 16 * * * /bin/duply calendar backup > /tmp/duply.log
Btw, le fichier cron se termine par une ligne vide, comme quelqu'un l'a souligné.
Une fois le travail "terminé" ...:
$ cat /tmp/duply.log
Start duply v1.5.7, time is 2012-06-22 16:59:01.
Au lieu de cela, en exécutant manuellement le script, il fonctionne correctement et donne cette sortie:
Start duply v1.5.7, time is 2012-06-22 17:06:39.
[cut]
... here is a long output generated by duply.
... and yes, files have been backed up.
[cut]
--- Finished state OK at 17:06:42.581 - Runtime 00:00:03.170 ---
J'ai également essayé de redémarrer le démon cron (Sudo service cron restart
) mais rien n'a changé.
Avez-vous une suggestion pour résoudre le problème?
Donc, sur la base des commentaires, suit la réponse à ma propre question.
Journal des erreurs
Une première étape utile (essentielle) consistait à obtenir un journal des erreurs.
La syntaxe pour en obtenir un est:
/bin/duply calendar backup > /tmp/duply.log 2> /tmp/duply.error.log
Cause
Heureusement, les fichiers journaux ont expliqué pourquoi:
duplicité manquante. installé et disponible dans le chemin?
J'ai donc ajouté au fichier cron la même valeur PATH
que j'ai dans la session Shell et le problème a disparu. Je ne pensais pas qu'il était nécessaire d'ajouter PATH
au fichier crontab car PATH
pendant la tâche cron est /usr/bin:/bin
, et réside dans /bin
.
Maintenant, le fichier crontab commence par:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games