Hör auf, mir eine E-Mail zu schicken

10

Wie kann ich verhindern, dass cron mir die Ergebnisse der von mir geplanten Jobs per E-Mail sendet?

Richard Hoskins
quelle

Antworten:

15

Durch Setzen der Umgebungsvariablen "MAILTO" als ""

Etwas wie:

SHELL=/bin/bash
MAILTO=



01 * * * *  /your/path/to/script/here.sh
OscarRyz
quelle
12

Wenn Sie möchten, dass ein einzelner Job E-Mails stoppt, fügen Sie einfach> / dev / null 2> & 1 hinzu

Beispielsweise:

0 * * * * /home/script >/dev/null 2>&1
rauben
quelle
1
Wenn Sie sicher sind, dass ein Lauf vor dem nächsten Start beendet wird, kann es sich lohnen, die Ausgabe in eine benannte Datei anstatt in / dev / null umzuleiten. Dies gibt Ihnen die Möglichkeit zu überprüfen, was mit dem letzten Lauf passiert ist, wenn Sie den Verdacht haben, dass a Problem.
Mas
4

Cron sendet Ihnen nur dann eine E-Mail, wenn eine Ausgabe erfolgt, entweder am stdoutoder stderr.

Wenn es sich um ein Skript handelt, das Sie geschrieben haben, machen Sie es weniger ausführlich - entfernen Sie unnötige echooder printAnweisungen. Das Umleiten stdoutzu /dev/nullist auch eine gültige Lösung:

2 * * * * /my/script > /dev/null

Wenn Sie immer noch Nachrichten erhalten , nachdem das zu tun, dann ist der Ausgang auf stderr, so dass es sollte ein Fehler sein, die Sie lösen sollen .. Wenn nicht, können Sie umleiten stderrzu /dev/nullmit ..

2 * * * * /my/script > /dev/null 2> /dev/null

.. obwohl das Ignorieren von Fehlermeldungen im Allgemeinen eine schlechte Idee ist! (Woher wissen Sie, wann der Cron-Job unterbrochen ist?)

Sie können die Ausgabe eines bestimmten Befehls von stderr nach stdout umleiten, indem Sie 2>&1beispielsweise Folgendes verwenden :

command_which_prints_messages_to_stderr 2>&1 # redirect stderr to stdout

..dann direkt stdoutzu /dev/nullin Ihrem Cron-Job - auf diese Weise bringen Sie den lauten Befehl zum Schweigen, ohne Fehlermeldungen zu verlieren

dbr
quelle