J'ai un fichier crontab qui ressemble à ceci:
* * * * * /home/abliskovs/update/update.sh
Cependant, lorsque je vérifie dans le syslog la preuve que le travail a été exécuté, rien ne peut indiquer qu'il a déjà été exécuté. Comment puis-je vérifier s'il fonctionne?
crontab -l
renvoie les éléments suivants:
* * * * * /home/abliskovs/update/update.sh
Ajoutez un >>/tmp/testlog.log à la fin de votre entrée de crontab (pour rediriger la sortie dans un fichier, vous pouvez rechercher ou vérifier si elle est en cours d'exécution. De plus, un 2> & 1 inclurait la sortie de la console d'erreur)
0 * * * * /home/abliskovs/update/update.sh 2> & 1 /tmp/testlog.log
Sudo /etc/init.d/cron restart
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
Assurez-vous que le fichier de script est exécutable {chmod 755}, sinon il ne l'exécutera pas.
Le script shell update.sh
contient probablement des erreurs, par exemple des 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 est également utile 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 mail
et le fichier syslog dans /var/log/syslog
pour rechercher les erreurs. Voir aussi cette question connexe pourquoi les tâches cron ne peuvent pas fonctionner .
J'ai rencontré le même problème et la raison pour laquelle je pensais était que crontab ne fonctionnait pas car il n'avait pas la permission. 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.