Cron Job ne fonctionne pas?

24

J'ai un fichier crontab qui ressemble à ceci:

* * * * * /home/abliskovs/update/update.sh

Cependant, lorsque je vérifie le journal système pour rechercher des preuves que le travail a été exécuté, rien ne peut indiquer qu'il a jamais été exécuté. Comment puis-je vérifier s'il fonctionne?

crontab -l génère les éléments suivants:

* * * * * /home/abliskovs/update/update.sh

Alex Bliskovsky
la source
OK, je l'ai fait.
Alex Bliskovsky
Peut-être une question stupide, mais elle m'est déjà arrivée, donc je vais la poser quand même. Assurez-vous que le démon cron fonctionne réellement! : P La deuxième supposition concerne les autorisations, assurez-vous qu'elle est exécutable par l'utilisateur exécutant le cronjob.
Mattias Ahnberg

Réponses:

21

Ajoutez un >> / tmp / testlog.log à la fin de votre entrée crontab (pour rediriger la sortie vers un fichier, vous pouvez enquêter ou vérifier s'il est en cours d'exécution, en plus un 2> & 1 inclurait la sortie de la console d'erreur)

Exemple

0 * * * * /home/abliskovs/update/update.sh 2> & 1 /tmp/testlog.log

Assurez-vous également les points suivants:

  • Ajoutez des cronjobs de manière appropriée. si vous avez utilisé crontab -e dans votre propre compte, les scripts sont exécutés avec votre utilisateur (et donc l'entrée crontab a un champ de moins - l'utilisateur pour l'exécuter, comme cela est connu). Si vous copiez simplement votre copie ci-dessus dans /etc/cron.d, cela échouera car vous n'avez pas spécifié d'utilisateur (ou plutôt car il ne trouve aucun utilisateur nommé "bash").
  • Assurez-vous que le fichier de script est exécutable, sinon il ne l'exécutera pas.
  • Recharger le cron jobs sudo service reload , or restart cron servicesudo /etc/init.d/cron restart

Comment rendre un fichier exécutable?

Plusieurs façons de rendre votre fichier exécutable

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh
Md Mahbubur Rahman
la source
3

Assurez-vous que le fichier de script est exécutable {chmod 755} sinon il ne l'exécutera pas

user25
la source
2
Pour rendre un fichier exécutable, vous pouvez également exécuterchmod +x filename
Stefano Palazzo
0

Le script shell update.shcontient probablement des erreurs, par exemple certaines commandes qui ne peuvent pas être exécutées car la commande est introuvable. Dans ce cas, il peut être utile d'ajouter le chemin d'accès à votre commande dans la variable PATH, ou de l'ajouter directement devant votre commande. Il permet également de spécifier l'adresse e-mail MAILTO, les e-mails résultant de l'exécution de Cronjobs sont envoyés à cette adresse

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

Vous pouvez également vérifier la boîte aux lettres locale avec mailet le fichier syslog /var/log/syslogpour les erreurs. Voir aussi cette question connexe pourquoi les cronjobs peuvent ne pas fonctionner .

0x4a6f4672
la source
0

J'ai rencontré le même problème et la cause pour moi était que crontab ne fonctionnait pas car il n'y était pas autorisé. J'ai changé de fichier et je l'ai mis dans /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

Faites-moi savoir si cela fonctionne pour vous.

Kamaro Lambert
la source