GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man einen Cronjob komplett zum Schweigen bringt /dev/null/?

Auf meinem Ubuntu-Desktop und auf meinem Debian-Server habe ich ein Skript, das jede Minute ausgeführt werden muss (ein Skript, das den Minute-Tic meines Space-Online-Browsergames aufruft).

Das Problem ist, dass Cron auf Debian-Derivaten in /var/log/syslog protokolliert jedes Mal, wenn es ausgeführt wird. Am Ende sehe ich wiederholt die Nachricht, dass sie immer wieder in /var/log/syslog ausgeführt wurde :

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 nach /dev/null umleiten kann , um beispielsweise alle Fehler- und Warnmeldungen eines Programms auszublenden, kann ich eine solche Zeile in crontab erstellen

* * * * *       root    /usr/local/sbin/mycommand.sh > /dev/null

Aber ich möchte einen Cronjob ausführen und sicher sein, dass alle generierten Ausgaben oder Fehler an NULL weitergeleitet werden, sodass keine Nachrichten im Syslog und keine E-Mails generiert werden

BEARBEITEN:
Es gibt eine Lösung, um die Cron-Protokolle in ein separates Protokoll umzuleiten, wie hier vorgeschlagen, indem /etc/syslog.conf geändert wird

Aber der Nachteil ist, dass dann ALLE Ausgaben aller Cronjobs umgeleitet werden.

Kann ich irgendwie nur einen einzelnen Cronjob in eine separate Protokolldatei umleiten? Vorzugsweise innerhalb der cron.hourly konfigurierbar Datei selbst.

Akzeptierte Antwort:

Machen Sie die Zeile so:

* * * * *       root    /usr/local/sbin/mycommand.sh > /dev/null 2>&1

Dadurch werden sowohl STDOUT (1) als auch STDERR (2) erfasst und an /dev/null gesendet .

MAILTO

Sie können die E-Mail auch deaktivieren, indem Sie MAILTO="" setzen und dann zurücksetzen Dadurch wird das Senden von E-Mails deaktiviert.

Beispiel

MAILTO=""
* * * * *       root    /usr/local/sbin/mycommand.sh > /dev/null 2>&1

MAILTO="[email protected]"
 * * * * *      root    /usr/local/sbin/myothercommand.sh

Zusätzliche Nachrichten

Häufig erhalten Sie die folgenden Arten von Nachrichten in /var/log/syslog :

Nov 11 08:17:01 manny CRON[28381]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Dies sind einfach Benachrichtigungen über Cron, dass ein Verzeichnis von Cronjobs ausgeführt wurde. Diese Meldung hat nichts direkt mit diesen Jobs zu tun, sondern kommt vom crond Dämon direkt. Es gibt nicht wirklich etwas, was Sie dagegen tun können, und ich würde Sie ermutigen, diese nicht zu deaktivieren, da sie wahrscheinlich das einzige Fenster sind, das Sie in das Geschehen von crond haben über die Protokolle.

Wenn sie Sie sehr stören, können Sie sie jederzeit an eine alternative Protokolldatei weiterleiten, um sie aus Ihrem /var/log/syslog zu entfernen Datei, über /etc/syslog.conf Konfigurationsdatei für syslog .


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

  3. Wann sollte /dev/random vs. /dev/urandom verwendet werden?

  4. So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

  5. Was sind /dev/zero- und /dev/null-Dateien in Linux

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

So richten Sie passwortloses SSH mit RSA-Schlüsseln ein

Wie Linux /dev/tty und /dev/tty0 verwendet

echo oder print /dev/stdin /dev/stdout /dev/stderr

Warum sind < oder > erforderlich, um /dev/tcp