web-dev-qa-db-fra.com

Comment enregistrer les tâches cron?

Je veux savoir comment je peux voir exactement ce que les tâches cron font à chaque exécution. Où se trouvent les fichiers journaux? Ou puis-je envoyer la sortie à mon email? J'ai défini l'adresse électronique à laquelle envoyer le journal lorsque le travail périodique est exécuté, mais je n'ai encore rien reçu.

176
Adrian M.
* * * * * myjob.sh >> /var/log/myjob.log 2>&1

enregistrera toutes les sorties du travail cron dans /var/log/myjob.log

Vous pouvez utiliser mail pour envoyer des courriels. La plupart des systèmes envoient par courrier électronique la sortie des travaux non gérés cron à root ou à l'utilisateur correspondant.

282
Spliffster

Par défaut, cron enregistre dans/var/log/syslog pour que vous puissiez voir les entrées associées à cron en utilisant:

grep CRON /var/log/syslog

https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log

52
Matthew Lock

Il existe au moins trois types de journalisation différents:

  1. La journalisation AVANT l'exécution du programme, qui ne consigne que SI le Cronjob TRIED pour exécuter la commande. Celui-ci est situé dans/var/log/syslog, comme déjà mentionné par @Matthew Lock.

  2. La consignation des erreurs APRÈS que le programme ait essayé de s’exécuter, ce qui peut être envoyé à un e-mail ou à un fichier, comme mentionné par @Siffiffster. Je préfère me connecter à un fichier, car avec le courrier électronique ALORS, vous avez une NOUVELLE source de problèmes, et sa vérification de l’envoi et de la réception du courrier électronique fonctionne parfaitement. Parfois c'est le cas, parfois non. Par exemple, sur un ordinateur de bureau commun simple qui ne vous intéresse pas Configurer un smtp, vous préférerez parfois vous connecter à un fichier:

     * * * *  COMMAND_ABSOLUTE_PATH > /ABSOLUTE_PATH_TO_LOG 2>&1
    
    • J'envisagerais également de vérifier les autorisations de/ABSOLUTE_PATH_TO_LOG et d'exécuter la commande à partir des autorisations de cet utilisateur. Juste pour vérification, pendant que vous testez si cela pourrait être une source potentielle de problèmes.
  3. La journalisation du programme lui-même, avec sa propre gestion des erreurs et sa journalisation à des fins de suivi.

Il existe des sources courantes de problèmes avec les tâches cron: * Le CHEMIN ABSOLU du binaire à exécuter. Quand vous le lancez à partir de votre Shell, ça pourrait marcher, mais le processus cron semble en utiliser un autre environnement, et par conséquent, il ne trouve pas toujours les fichiers binaires si vous ne le faites pas utilisez le chemin absolu . * Les BIBLIOTHÈQUES utilisées par un binaire. C'est plus ou moins le même point précédent, mais assurez-vous que, si vous mettez simplement le nom de la commande, vous vous référez au binaire qui utilise exactement la même bibliothèque, ou mieux, vérifiez si le binaire auquel vous faites référence avec le chemin absolu est le même que vous vous référez lorsque vous utilisez la console directement. Les fichiers binaires peuvent être trouvés à l'aide de la commande localize, par exemple:

$locate python

Assurez-vous que le fichier binaire que vous allez référencer est identique à celui que vous appelez dans votre Shell ou testez simplement à nouveau dans votre Shell en utilisant le chemin absolu que vous prévoyez de mettre dans le cronjob.

  • Une autre source commune de problèmes est la syntaxe dans le travail cron. N'oubliez pas qu'il existe des caractères spéciaux que vous pouvez utiliser pour les listes (virgules), pour définir des plages (tirets -), pour définir l'incrément de plages (barres obliques), etc. Regardez: http: //www.softpanorama .org/Utilities/cron.shtml
9
David L

Voici mon code:

* * * * * your_script_fullpath >> your_log_path 2>&1
9
Haimei

Sur Ubuntu, vous pouvez activer un fichier cron.log pour ne contenir que les entrées CRON.

Décommentez la ligne qui mentionne cron dans le fichier /etc/rsyslog.d/50-default.conf:

#  Default rules for rsyslog.
#

#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                          /var/log/cron.log

Enregistrez et fermez le fichier, puis redémarrez le service rsyslog:

Sudo systemctl restart rsyslog

Vous pouvez maintenant voir les entrées du journal cron dans son propre fichier:

Sudo tail -f /var/log/cron.log

Exemples de sortie:

Jul 18 07:05:01 machine-Host-name CRON[13638]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

Cependant, vous ne verrez pas plus d'informations sur les scripts réellement exécutés dans /etc/cron.daily ou /etc/cron.hourly, à moins que ces scripts ne dirigent la sortie vers le fichier cron.log (ou peut-être dans 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:

# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log 2>&1

Étapes prises à partir de: https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu-linux/

4
Gianfranco P.

Si vous exécutez une commande avec Sudo, cela ne le permettra pas. Sudo a besoin d'un tty.

1
Saad Masood

cron envoie déjà la sortie standard et l'erreur standard de chaque travail exécuté par courrier au propriétaire du travail cron.

Vous pouvez utiliser MAILTO=recipient dans le fichier crontab pour que les courriels soient envoyés à un autre compte.

Pour que cela fonctionne, le courrier doit fonctionner correctement. Livrer dans une boîte aux lettres locale n'est généralement pas un problème (en fait, il est probable que ls -l "$MAIL" révélera que vous en avez déjà reçu), mais le faire sortir de la boîte et sur Internet nécessite le MTA (Postfix, Sendmail, etc.). être correctement configuré pour se connecter au monde.

1
tripleee

Si vous souhaitez toujours vérifier vos tâches cron, vous devez fournir un .__ valide. compte de messagerie lors de la définition des tâches Cron dans cPanel.

Lorsque vous spécifiez un courrier électronique valide, vous recevez la sortie du travail cron exécuté. Ainsi, vous pourrez le vérifier et vous assurer que tout a été exécuté correctement. Notez que vous ne recevrez pas d'e-mail s'il n'y a pas de sortie de la commande cron job.

N'oubliez pas que vous recevrez un email pour chacune des tâches cron exécutées. Cela pourrait inonder votre boîte de réception au cas où votre cron fonctionnerait trop souvent

0
Faridul Khan