1028 votes

Où se trouve le journal de cron / crontab ?

Je veux vérifier que ma tâche cron s'exécute et à quelle heure. Je pense qu'il existe un journal pour mon sudo crontab -e des emplois, mais où ?

J'ai cherché sur google et j'ai trouvé des recommandations pour regarder dans /var/log (dans lequel je ne vois rien avec 'cron' dans le nom) et d'éditer le fichier /etc/syslog.conf que je n'ai pas non plus.

0 votes

Attention, dans le crontab le contexte % crée une nouvelle ligne, donc une mauvaise utilisation de ce caractère (c'est-à-dire le fait de ne pas l'échapper, par exemple dans date +"%Y-%m-%d" ) peut empêcher une journalisation correcte ( date +%Y-%m-%d >> /tmp/cron.log ne fonctionnera pas). Aussi, cette réponse peut aider.

1220voto

Brett Veenstra Points 1447

Dans une installation par défaut, les tâches cron sont enregistrées dans le fichier

/var/log/syslog

Vous pouvez voir les tâches cron dans ce fichier journal en exécutant

 grep CRON /var/log/syslog

Si vous n'avez rien reconfiguré, les entrées seront là.

74 votes

Si aucun MTA n'est installé, cron jette simplement le résultat de la tâche.

16 votes

Le journal cron peut se trouver dans un autre fichier du dossier /var/log/ répertoire. Recherchez cron.log ou un équivalent.

0 votes

Utiliser journalctl | grep cron sur les systèmes systemd

336voto

Rob Ottaway Points 457

Vous pouvez créer un fichier cron.log qui contient uniquement les entrées CRON qui apparaissent dans syslog. Notez que les tâches CRON apparaîtront toujours dans syslog si vous suivez les instructions suivantes.

Ouvrir le fichier

/etc/rsyslog.d/50-default.conf

Trouvez la ligne qui commence par :

#cron.*

décommentez cette ligne, sauvegardez le fichier, et redémarrez rsyslog :

sudo service rsyslog restart

Vous devriez maintenant voir un fichier journal cron ici :

/var/log/cron.log

L'activité de Cron sera désormais enregistrée dans ce fichier (en plus de syslog).

Notez que dans cron.log vous verrez des entrées pour quand cron a exécuté scripts dans /etc/cron.hourly, cron.daily, etc. - Par exemple, quelque chose comme :

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Cependant, vous ne verrez pas plus d'informations sur les scripts qui ont été effectivement exécutés à l'intérieur de /etc/cron.daily ou /etc/cron.hourly, à moins que ces scripts ne dirigent la sortie vers le cron.log (ou peut-être vers un autre fichier journal).

Si vous voulez vérifier si une crontab est en cours d'exécution et ne pas avoir à la chercher dans cron.log ou syslog, créez une crontab qui redirige la sortie vers un fichier journal de votre choix - quelque chose comme :

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

Ceci redirigera toute la sortie standard et les erreurs qui peuvent être produites par le script qui est exécuté vers le fichier journal spécifié.

2 votes

A mon avis, cette réponse est meilleure à l'avenir. Ainsi votre fichier syslog est plus clair.

9 votes

Pour exclure également le journal cron de syslog, vous pouvez modifier la ligne suivante *.*;auth,authpriv.none -/var/log/syslog a *.*;auth,authpriv.none,cron.none -/var/log/syslog .

0 votes

Sur notre CentOS 6, cron.* est défini dans /etc/rsyslog.conf, alors qu'il est vide dans le dossier rsyslog.d.

116voto

Il peut parfois être utile de le surveiller en permanence, dans ce cas :

tail -f /var/log/syslog | grep CRON

25 votes

Eh bien, vous voulez probablement utiliser -F qui suivra le fichier à travers les changements de nom, de sorte que lorsqu'il sera tronqué ou déplacé, par exemple vers /var/log/syslog.1.gz vous suivez toujours l'actuel /var/log/syslog fichier. Selon la documentation du manuel, c'est la même chose que d'exécuter tail xxxx -f --retry

65voto

Andrew Meyer Points 1197

Vous pouvez également diriger la sortie des cronjobs individuels vers leurs propres journaux pour une meilleure lisibilité, vous aurez juste besoin d'ajouter la sortie de date quelque part.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

5 votes

Vrai, mais si l'exécution de cette ligne échoue à cause d'une erreur de syntaxe, rien ne sera écrit dans le journal de sortie spécifié.

17 votes

Vous pouvez résoudre ce problème en ajoutant 2>&1 après la spécification du fichier journal. Il est également préférable de tester vos cronjobs avant de les ajouter à la crontab, puis d'être présent lors de la première exécution programmée pour s'assurer que la crontab est correctement formatée.

3 votes

Si daily-backup.log n'existe pas, CRON le crée automatiquement.

39voto

james young Points 1211

Si vous avez systemd installé sur votre système, vous pouvez afficher le journal des tâches cron en utilisant la commande journalctl comando.

Par exemple, sur mon Ubuntu 17.10 :

journalctl -u cron.service

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X