web-dev-qa-db-fra.com

Pourquoi ne fonctionne-t-il pas en double lorsqu'il est défini comme un travail cron?

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?

2
Paolo

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
1
Paolo