In meinem letzten Artikel zum Thema „Cronjob Ausgabe in Datei umleiten“ kam vom Blogleser Sebastian die Frage auf, wie man nervige Cronjob Daemon Emails abstellen kann.
Vorneweg möchte ich sagen dass es unter Umständen nicht schlau ist einfach die Cron Emailbenachrichtigung zu deaktivieren. Denn die Cronjobs sollten ja grundsätzlich so konfiguriert sein, dass nur im Fehlerfall ein Email gesendet wird. Das ist besonders wichtig, da wir ja wissen wollen wenn mal ein Cronjob fehl schlägt.
Deshalb ist es ratsam sein Skript so zu optimieren, dass beim „normalen“ Ausführen keine Fehler entstehen. Sollte dann wirklich mal ein Fehler passieren weil irgendwelche Dateien beschädigt sind oder ähnliches, dann wirft das Skript einen Fehler und benachrichtigt uns per Email.
Cronjob Daemon Mails nur im Fehlerfall (Error)
Damit nicht die gesamte Ausgabe (ohne Fehler) eines Cronjobs per Email versendet wird kann die Standard Ausgabe (stdout) nach /dev/null umgeleitet werden. Ein Cronjob würde dann wie folgt aussehen:
[bash]30 22 * * * /usr/scripts/mysql_backup.sh > /dev/null[/bash]„>“ steht dabei für die Kurzfassung von „1>“ (stdout) und gibt die Anweisung die „normale“ (non error) Ausgabe umzuleiten.
[sam id=“2″ codes=“true“]Cronjob Emails deaktivieren
Wer aber dennoch die Benachrichtigung für einen bestimmten Cronjob deaktivieren möchte kann wie folgt vorgehen:
[bash]30 22 * * * /usr/scripts/mysql_backup.sh > /dev/null 2>&1[/bash]„2>&1“ steht für die Umleitung der Error Ausgabe (stderr) in die „normale“ Ausgabe (stdout). Die gesamte Ausgabe von /usr/scripts/mysql_backup.sh (stdout und stderr) wird so einfach ins Datennirvana nach /dev/null geleitet.
Bessere Variante:
Der cron Eintrag kann auch folgendermaßen abgekürzt werden „&>“ steht also für „2>&1“:
[bash]30 22 * * * /usr/scripts/mysql_backup.sh &> /dev/null[/bash]Cronjob Email Adresse ändern
Will man die Mail Adresse für die Cronjob Benachrichtigung ändern, kann man folgende Variable in den Cronjobs definieren (wird einmal in der Crontab gesetzt):
[bash]MAILTO="deine@mailadresse.com"[/bash]
Hui, jetzt werden aber die absoluten Basics ausgepackt. 😉
Aber für Anfänger mit Googlesuche ist das sicherlich ein feiner Beitrag. Vor allem mit dem Disclaimer vorneweg. 🙂
Hehe Natürlich,
Wenn eine Frage durch die Leser aufkommt, versuche ich diese natürlich zu beantworten und zu helfen. 😉
Gruß
Patrick
Patrick, das hast Du damals sehr gut gemacht. Basics sind auch für „Alte Hasen“ immer noch gut, denn wer alles behalten kann….
Stefan!
WOW! Großes Danke Patrick! Schön wenn es auch noch Blogs gibt, die leben und nicht ausgestorben sind.
So einen Service bin ich eigentlich nicht gewohnt!
Merci
Sebi
Wenn ich jetzt ganz ehrlich bin habe ich von dem Thema keinen blassen Schimmer, ich habe da echt nur Bahnhof verstanden. Nein aber was mich jetzt echt Faszinierte bei diesen Artikel,
ist das der Blogger diesen Artikel geschrieben hat um auf eine Frage eines Blog Lesser zu beantwortet, das sieht man auch nicht alle Tage. Da kann man nur das ist ein Blog der auf jeden Fall sehr zu empfehlen ist. Wie schon gesagt würde da sieht man das doch nicht Blogs Tot sind es sind doch noch welche die an ihren Lesser interessiert sind.
Sehr schön das hier noch auf den Leser eingegangen wird ist eh ein sehr guter Blog hier.. grad is mir auch noch die Plista werbung ins Auge gestochen rechts unten.. kannte ich noch garnet gleich mal bisschen eingelesen bei denen klingt ja echt gut … hast auf jedenfall einen neuen Stammleser!
So da habe ich doch die experten. Wenn ich das so mache, dann bekomme ich jetzt immer E-Mails. Vorher keine. Und nun weiß ich auch, was da nicht geht. Aber beheben kann ich das irgendwie auch nicht. Wie sag ich denn dem CronJob welche BashConfig er verwenden soll?
Hast du evtl. den „MAILTO“-Eintrag modifziert?
Bash Config? Was soll das sein? Die .bashrc/.bash_aliases? Ein Cronjob braucht i.d.R. keine Config, alle notwendigen Pfade sollten im Shellskript selbst definiert werden.
Hallo Patrick
Wie kann ich es anstellen, dass ich die error Meldungen in eine Datei umleite und trotzdem auch noch dieselbige an den mailempfänger geleitet werden..
grüße skyerjoe
Hi Profis,
ich verzweifle. Bekomme jetzt alle 2 Minuten eine Email zugestellt und das nerft. Kann mir einer sagen wie ich diese crontabzeile anpassen muss damit ich nur im Fehlerfall eine email bekomme.
Hier mal die Zeile
*/2 * * * * root ps ax | grep ‚ts3server_linux_amd64‘ | grep -v ‚grep‘ || (/etc/init.d/teamspeak start && echo „Es hat mal wieder der Teufel zugeschlagen und TS3 musste neu gestartet werden.“ | mail -s“Teamspeak Fehler“ email)
Meine nerven werden es euch danken.
Gruß Hans
WOW – klasse !! genau was ich suchte (Cron Newbie) – jetzt funkt es – bzw. nicht mehr. Danke Mann – ich hab mich schon bleede gesucht. Du rettest mir den Tag.