J'ai créé un fichier appelé ntpdate
in /etc/cron.hourly
#!/bin/sh
/usr/sbin/ntpdate-debian
date > /tmp/william_tmp
date > /william_tmp
date > ~/william_tmp
echo test
J'ai également fait Chmod 755 à ce dossier.
Cependant, je ne peux pas dire si le fichier a été exécuté ou non!
Le fichier n'est créé dans aucun des 3 répertoires.
Si je lance manuellement cd / && run-parts --report /etc/cron.hourly
, les fichiers sont créés et l’écho est généré.
Quelqu'un peut-il recommander (idéalement, étape par étape!) Des instructions pour vérifier qu'il fonctionne?
Un des principaux inconvénients de cron est que cron s'exécute dans un environnement Shell extrêmement limité. Par conséquent, de nombreuses variables ne sont pas exportées dans l'environnement, principalement $ PATH. Assurez-vous que vous utilisez tous les chemins absolus vers l'exécutable, y compris les fonctions courantes telles que echo
, uptime
, date
, etc. doivent tous utiliser des chemins complets (/bin/echo
, /bin/date
, /usr/bin/uptime
). Pour déterminer le chemin d'accès à un exécutable, vous pouvez utiliser la commande which
comme ceci: which echo
- cela vous montrera le chemin d'accès complet à cet outil.
Vous devriez regarder dans votre fichier journal /var/log/syslog
. Si un cron a fonctionné, il aurait une ligne comme:
Jun 11 19:09:01 penguin CRON[17376]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Jun 11 19:17:01 penguin CRON[17799]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Pour obtenir des conseils de dépannage, voir https://help.ubuntu.com/community/CronHowto#Troubleshooting_and_Common_Problems
Essayez de changer la première ligne de votre script (l'interprète) pour:
#!/bin/bash
J'ai également eu des problèmes dans le passé, avec des variables d'environnement et des problèmes avec PATH. Après avoir remplacé l’interprète par bash
, mes problèmes ont disparu.
Etant donné que j'ai ajouté le script clearme.sh
à /etc/cron.hourly/
Il suffit de filtrer les tâches CRON dans terminal avec le puissant egrep et awk:
$ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt
La sortie ressemblera à:
Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Pour tout expliquer pas à pas:
La 4ème étape est optionnelle. Il imprimera simplement les résultats dans le terminal au lieu du fichier.