Sur mon Ubuntu-Desktop et sur mon serveur Debian, j'ai un script qui doit être exécuté à la minute (un script qui appelle la minute de mon navigateur en ligne ).
Le problème est que sur les dérivés debian, cron enregistre /var/log/syslog
chaque fois qu’il s’exécute. Je finis par voir répéter le message, il a été exécuté à plusieurs reprises 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 travail cronjob et m'assurer que toutes les sorties générées ou les erreurs sont dirigées vers NULL, de sorte que cela ne génère aucun message dans syslog et ne génère aucun email.
EDIT:
il existe une solution pour rediriger les journaux cron dans un journal séparé comme proposé ici en modifiant/etc/syslog.conf
Mais l’inconvénient est que TOUTES les sorties de tous les cronjobs sont redirigées.
Puis-je en quelque sorte rediriger un seul travail cron dans un fichier journal séparé? De préférence, configurable à l'intérieur du cron.hourly
fichier lui-même.
MAILTO=""
comme la 1ère ligne de la crontab empêchera tout email. En outre, utilisez le trifecta complet sur vos lignes de commande si vous supprimez toutes les sorties. Les 3 types sont redirigés par cette chaîne: >/dev/null 2>&1
- Bien sûr, vous pouvez avoir le script inclut des écritures périodiques dans un journal séparé.
MAILTO=""
au début du fichier cron. Cela supprimera tous les emails. Et je n’ai jamais entendu parler d’un démon cron qui envoie la sortie du travail à syslog (mais j’imagine que c’est possible).