Sur mon bureau Ubuntu et sur mon serveur debian, j'ai un script qui doit être exécuté chaque minute (un script qui appelle la minute-tic de mon jeu de navigateur en ligne spatial).
Le problème est que sur les dérivés de Debian, cron se connecte à /var/log/syslog
chaque fois qu'il s'exécute. Je finis par voir répété le message qu'il a été exécuté encore et encore dans /var/log/syslog
:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Je sais que pour supprimer la sortie d'un programme, je peux le rediriger vers /dev/null
, par exemple pour masquer tous les messages d'erreur et d'avertissement d'un programme, je peux créer une ligne dans crontab comme celle-ci
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Mais je voudrais exécuter un cronjob et m'assurer que toutes les sorties ou erreurs générées sont redirigées vers NULL, afin qu'il ne génère aucun message dans syslog et ne génère aucun e-mail
EDIT :
il existe une solution pour rediriger les cron-logs dans un journal séparé comme proposé ici en modifiant /etc/syslog.conf
Mais l'inconvénient est qu'alors TOUTES les sorties de tous les cronjobs sont redirigées.
Puis-je en quelque sorte rediriger un seul cronjob vers un fichier journal séparé? Configurable de préférence dans le cron.hourly
fichier lui-même.
Réponse acceptée :
Faites la ligne ceci :
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1
Cela capturera à la fois STDOUT (1) et STDERR (2) et les enverra à /dev/null
.
MAILTO
Vous pouvez également désactiver l'e-mail en définissant puis en réinitialisant le MAILTO=""
qui désactivera l'envoi de tout e-mail.
Exemple
MAILTO=""
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1
MAILTO="[email protected]"
* * * * * root /usr/local/sbin/myothercommand.sh
Messagerie supplémentaire
Souvent, vous recevrez les types de messages suivants dans /var/log/syslog
:
Nov 11 08:17:01 manny CRON[28381]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Ce sont simplement des notifications via cron qu'un répertoire de cronjobs a été exécuté. Ce message n'a rien à voir directement avec ces travaux, il vient plutôt de la crond
démon directement. Il n'y a vraiment rien que vous puissiez faire à ce sujet, et je vous encourage à ne pas les désactiver, car ils sont probablement la seule fenêtre que vous avez sur les événements de crond
via les journaux.
S'ils vous dérangent beaucoup, vous pouvez toujours les diriger vers un autre fichier journal pour les sortir de votre /var/log/syslog
fichier, via le /etc/syslog.conf
fichier de configuration pour syslog
.