Auf meinem Ubuntu-Desktop und auf meinem Debian-Server habe ich ein Skript, das jede Minute ausgeführt werden muss (ein Skript, das die Minutentaktik meines Space-Online-Browserspiels aufruft ).
Das Problem ist, dass cron auf Debian-Derivaten bei /var/log/syslog
jeder Ausführung protokolliert . Am Ende habe ich die Nachricht wiederholt gesehen, in der sie immer und immer wieder ausgeführt wurde /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)
Ich weiß, dass ich, um die Ausgabe eines Programms zu unterdrücken, es umleiten kann /dev/null
, um beispielsweise alle Fehler- und Warnmeldungen eines Programms auszublenden, eine Zeile in crontab wie dieser erstellen kann
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Aber ich möchte einen Cronjob ausführen und sicherstellen, dass alle generierten Ausgaben oder Fehler auf NULL weitergeleitet werden, damit im Syslog keine Nachrichten und keine E-Mails generiert werden
BEARBEITEN:
Es gibt eine Lösung, um die Cron-Protokolle durch Ändern in ein separates Protokoll umzuleiten, wie hier vorgeschlagen/etc/syslog.conf
Der Nachteil ist jedoch, dass dann ALLE Ausgaben aller Cronjobs umgeleitet werden.
Kann ich irgendwie nur einen einzelnen Cronjob in eine separate Protokolldatei umleiten? Vorzugsweise in der cron.hourly
Datei selbst konfigurierbar .
MAILTO=""
da die erste Zeile der Crontab alle E-Mails verhindert. Verwenden Sie auch das vollständige Trifecta in Ihren Befehlszeilen, wenn Sie die gesamte Ausgabe unterdrücken. Alle drei Arten werden durch diese Zeichenfolge umgeleitet: >/dev/null 2>&1
- Natürlich können Sie den Scrip auch in ein separates Protokoll schreiben lassen.
MAILTO=""
am Anfang der Cron-Datei setzen. Dadurch werden alle E-Mails unterdrückt. Und ich habe noch nie von einem Cron-Daemon gehört, der Job-Ausgaben an Syslog sendet (aber ich denke, es ist möglich).