web-dev-qa-db-fra.com

Où se trouve le journal cron / crontab?

Je veux vérifier que mon travail cron est en cours d'exécution et à quelle heure. Je crois qu’il existe un journal pour mes travaux Sudo crontab -e, mais où?

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

703
Scott Szretter

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

/var/log/syslog

Vous pouvez voir seulement les tâches cron dans ce fichier journal en lançant

 grep CRON /var/log/syslog

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

840
Richard Holloway

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

220
user12345

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

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

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
28
Andrew Meyer

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.

8
Tristan Maat

Il est dans /var/log/syslog par 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 commande wcron qui l’affiche en temps quasi réel. De plus, cela renvoie à une autre réponse,

Comment changer le niveau de log du 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.

7
SDsolar

Si vous avez installé systemdsur votre système, vous pouvez afficher le journal des tâches cron à l'aide de la commande journalctlname__.

Par exemple, sur mon Ubuntu 17.10:

journalctl -u cron.service
4
an9wer

Fedoar 29 et RHEL 7

journalctl -t CROND

Dans le manuel journalctl:

   -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.
1
HarlemSquirrel

Comme mentionné précédemment, les tâches cron sont consignées sur /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 .

1
zero

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

1
Himanshu