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?


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).


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.


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.