Où se trouve le journal cron / crontab?

755

Je veux vérifier que mon travail cron est en cours d'exécution et à quelle heure. Je crois qu'il y a un journal pour mes sudo crontab -eemplois, mais où?

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

Scott Szretter
la source

Réponses:

903

Sur une installation par défaut, les travaux cron sont consignés dans

/var/log/syslog

Vous pouvez voir que les tâches cron dans ce fichier de log en lançant

 grep CRON /var/log/syslog

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

Richard Holloway
la source
46
Si aucun MTA n'est installé, cron supprime simplement la sortie du travail.
Barry Kelly
11
Le journal cron peut se trouver dans un autre fichier du /var/log/répertoire. Recherchez le fichier cron.log ou équivalent.
Navigatron
4
cela ne me donne pas la sortie du travail. cela donne simplement un message générique que le cron a été traité.
Chovy
2
sur AWS, il était / var / log / cron
tsukimi le
5
@shadi vous pouvez aussi grep -i CRONfaire une recherche insensible à la casse
nafg le
237

Vous pouvez créer un fichier cron.log pour contenir uniquement les entrées CRON qui apparaissent dans syslog. Notez que les travaux 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é cron sera maintenant enregistrée dans ce fichier (en plus de syslog).

Notez que dans cron.log, vous verrez les entrées pour lesquelles cron a exécuté des 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 réellement exécutés dans /etc/cron.daily ou /etc/cron.hourly, sauf si ces scripts dirigent directement la sortie vers le fichier 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 à le rechercher 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

Cela redirigera toutes les sorties standard et les erreurs pouvant être générées par le script exécuté dans le fichier journal spécifié.

utilisateur12345
la source
1
A mon avis, cette réponse est meilleure à l'avenir. Donc, votre fichier syslog est plus clair.
ShgnInc
9
Pour exclure également le journal cron de syslog, vous pouvez modifier la ligne *.*;auth,authpriv.none -/var/log/syslogen *.*;auth,authpriv.none,cron.none -/var/log/syslog.
Koen.
Sur notre CentOS 6, cron. * Est défini dans /etc/rsyslog.conf, alors que i est vide dans le dossier rsyslog.d.
Scott Chu
à quoi sert-il 2>&1?
John Joe
2
@JohnJoe 2> & 1 est utilisé pour transférer stderr vers stdout, de cette façon vous aurez également stderr pour enregistrer le fichier.
Sampo Sarrala
80

Parfois, il peut être utile de le surveiller en permanence, dans ce cas:

tail -f /var/log/syslog | grep CRON
KennyCason
la source
10
Eh bien, vous voudrez probablement utiliser -F, qui suivra le fichier lors des changements de nom, de sorte que lorsqu'il est tronqué / déplacé vers, par exemple /var/log/syslog.1.gz, vous suivez toujours le /var/log/syslogfichier actuel . Pour l'homme, c'est la même chose que courirtail xxxx -f --retry
Momer
37

Vous pouvez également diriger la sortie des tâches cron individuelles vers leurs propres journaux pour une meilleure lisibilité. Il vous suffira simplement d'ajouter la sortie de la date quelque part.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
Andrew Meyer
la source
4
true, mais si cette ligne échoue en raison d'une erreur de syntaxe, rien ne sera écrit dans le journal de sortie spécifié.
Raptor
11
Vous pouvez résoudre ce problème en ajoutant 2> & 1 après la spécification du fichier journal. Il est également recommandé de tester vos tâches cron avant de les ajouter à la crontab, puis d’être présentes lors de la première exécution planifiée pour vous assurer que la crontab est correctement formatée.
Andrew Meyer
10

Si vous avez systemdinstallé sur votre système, vous pouvez afficher le journal des tâches cron à l'aide de la journalctlcommande.

Par exemple, sur mon Ubuntu 17.10:

journalctl -u cron.service
une réponse
la source
9

C'est une très vieille question, mais aucune de ces réponses ne semble satisfaisante.

Commencez par exécuter votre tâche cron toutes les minutes, puis exécutez cron en tant que non-démon (temporairement, supprimez tout crond qui a peut-être déjà commencé) avec la journalisation des tests:

crond -nx test

Et voyez le journal de l'exécution de votre programme en passant par votre terminal.

Tristan Maat
la source
7
Ne fonctionne pas le 14.04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-.
8

C'est /var/log/syslogpar défaut.

Mais il peut être configuré pour créer un fichier cron.log distinct, ce qui est plus utile.

Ce Q & A décrit le processus:

16.04: Comment faire pour que cron crée cron.log et le surveille en temps réel?

Cette réponse contient également les instructions pour créer une wcroncommande qui l’affiche en temps quasi réel. De plus, cela renvoie à une autre réponse,

Comment changer le niveau de journalisation cron?

cela montre comment modifier le niveau de journalisation pour inclure plus que le début des travaux - le niveau 15 affiche également les erreurs et l'heure de fin.

SDsolar
la source
5

Fedoar 29 et RHEL 7

journalctl -t CROND

Du journalctlmanuel:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.
HarlemSquirrel
la source
3

Vous pouvez rediriger la sortie de cron vers un fichier tmp

Tels que: 00 11 07 * * / bin / bash / home /ubuntu/command.sh> / tmp / output 2> & 1

Erreur et sortie normale, les deux seront redirigés vers le même fichier

Himanshu
la source
2

Comme mentionné précédemment, les tâches cron sont connectées à /var/log/syslog

Vous pouvez diriger le syslog vers grep et filtrer les journaux CRON, comme ceci

less /var/log/syslog | grep CRON 

Vous pouvez rechercher dans vos journaux crontab, comme ceci

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

Vous pouvez rechercher dans les journaux de votre historique crontab stockés dans des fichiers gz, comme ceci

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Il est toujours bon d'avoir un mécanisme de journalisation, vous pouvez rapidement configurer ELK pour vos serveurs, vous pouvez également expérimenter avec logz .

zéro
la source