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.
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à.
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é.
Parfois, il peut être utile de le surveiller en permanence, dans ce cas:
tail -f /var/log/syslog | grep CRON
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
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.
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.
Si vous avez installé systemd
sur votre système, vous pouvez afficher le journal des tâches cron à l'aide de la commande journalctl
name__.
Par exemple, sur mon Ubuntu 17.10:
journalctl -u cron.service
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.
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 .
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