Comment savoir pourquoi cron n'exécute pas mes tâches?

15

J'utilise Ubuntu 14.04 et le démon cron est en cours d'exécution:

# ps ax | grep cron
822 ?        Ss     0:00 cron

mais il n'exécute aucun travail. J'obtenais auparavant des entrées /var/log/syslogcomme celle-ci:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

mais maintenant il n'y a plus d'entrées liées à cron. J'obtenais également des entrées comme celle-ci dans /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

mais encore une fois, il n'y a maintenant aucune entrée liée à cron.

Je ne suis pas au courant que quoi que ce soit ait changé. J'ai essayé de redémarrer cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

J'ai essayé d'utiliser crontab -epour ajouter un travail cron * * * * * date >> /tmp/somefilequi fonctionnait, mais il a installé un nouveau crontab dans /var/spool/cron/crontabs/root, alors que je veux que cron utilise le fichier dans /etc/crontab.

Y a-t-il une option de débogage que je peux utiliser, ou un journal quelque part qui pourrait donner un message d'erreur que je peux étudier?

jl6
la source
1
Qu'est-ce qui s'affiche pour crontab -l?
user345352353
no crontab for root.
jl6
Je crois que si vous faites un peu de recherche sur ce site SE, vous aurez une réponse. Il s'agit d'un problème assez courant.
mdpc
Les crons récupérés à l'aide de la crontabcommande ( -lswitch) dépendent de l'utilisateur, tandis qu'ils /etc/crontabsont utilisés pour stocker les crons à l'échelle du système. Pour cette raison, les tâches enregistrées dans /etc/crontabn'apparaîtront dans personne crontab -l.
John WH Smith

Réponses:

4

Pour vous aider à déboguer ce qui ne va pas avec vos crontravaux, vous devriez vérifier votre courrier. Ceci est généralement stocké dans un fichier comme/var/mail/<user_name> ou /var/spool/mail/<user_name>.

Ces deux fichiers sont en fait des liens physiques sur ma boîte Debian, mais je ne sais pas si c'est standard.

Explication

Du cron(8) page:

Lors de l'exécution des commandes, toute sortie est envoyée par courrier électronique au propriétaire de la crontab (ou à l'utilisateur nommé dans la variable d'environnement MAILTO de la crontab, s'il en existe un).

Joseph R.
la source
J'ai vérifié le courrier; aucun n'est généré, ni de fichier dead.letter.
jl6
0

Vous avez montré qu'il n'y a pas de crontab pour root, y a-t-il des utilisateurs qui ont une entrée crontab? Si vous utilisez uniquement root, vous pouvez également vérifier les répertoires suivants: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

sur ma machine (centos 6.4), j'ai mlocate.cron dans le répertoire /etc/cron.daily/ et cron exécute ce script quotidiennement.

donc je pense que vous avez juste besoin d'ajouter des tâches cron.

Hudspeth
la source
Mais il y a un fichier crontab dans /etc/crontab. Peut-être la question est pourquoi ne le crontab -lreconnaît pas?
jl6
0

J'ai résolu ce problème en modifiant les autorisations sur /etc/crontables éléments suivants:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Auparavant, c'était le cas -rw-rw-r--. C'était le seul changement. Cela ne fonctionnait pas, maintenant c'est le cas. Je ne sais toujours pas pourquoi.

jl6
la source
1
La racine crontab exécuterait toutes les commandes en tant que root. Les autorisations autorisant l'accès en écriture à des utilisateurs non root seraient considérées comme un trou de sécurité.
ChuckCottrill
@ChuckCottrill: Mais le bit d'écriture de groupe aurait seulement donné un accès en écriture à ceux du groupe racine - qui est vraisemblablement juste des utilisateurs root?
jl6
0

J'ai également rencontré un type de problème similaire, mais après avoir spécifié la racine en tant qu'utilisateur sur le /etc/crontab, le travail cron a commencé à se déclencher.

Cela peut être dû à la syntaxe suivie sur le crontab -equi est différente du /etc/crontab.

MohanBabu
la source