cronic bringt cronjobs zum Schweigen

  Uwe Burger   Lesezeit: 2 Minuten  🗪 3 Kommentare

Mails von cronjobs möchte man nur im Fehlerfall bekommen.

cronic bringt cronjobs zum schweigen

Eine der besten Eigenschaften und gleichzeitig die schlechteste Eigenschaft von cron ist das automatische Versenden von E-Mails. Cron sendet die Ausgabe eines Cronjobs automatisch per E-Mail an den Benutzer, unter dem der Cronjob ausgeführt wird.

Zunächst scheint es sich dabei um eine sinnvolle Funktion zu handeln. Denn wenn Cronjobs über einen längeren Zeitraum automatisch im Hintergrund laufen, kann eine E-Mail-Benachrichtigung im Falle eines Fehlers hilfreich sein.

Leider betrachtet Cron jede Ausgabe als wichtig, so auch die Standardausgabe. Viele Unix-Befehle senden Statusinformationen an die Standardausgabe. Einige Befehle haben eine Quiet-Option, über die dann allerdings in einigen Fällen auch die Fehlerausgabe abschaltet wird. Erschwerend kommt hinzu, dass Cron Return-Codes ignoriert, was bedeutet, dass Fehler von "ruhigen" Programmen ignoriert werden.


Es ist daher fast unmöglich, einen Cronjob zu erstellen, der "leise" genug ist, um ohne Ausgabe zu laufen, aber dennoch alle Fehler meldet. Nach dem Prinzip "Schlimmer ist besser" besteht die typische Lösung darin, alles unter den Teppich zu kehren, indem alle Ausgaben nach /dev/null umgeleitet werden:

0 1 * * * Sicherung >/dev/null 2>&1

Wenn ein Cronjob fehlschlägt, wird man darüber nicht informiert. Falls man beispielsweise Cron nutzt, um Dateien zu sichern, erfährt man möglicherweise über einen längeren Zeitraum nicht, dass die Sicherung fehlgeschlagen ist. Im schlimmsten Fall kann dies zu einem Dateiverlust führen.

Abhilfe schafft Cronic. Dabei handelt es sich um ein kleines Shim-Shell-Skript, mit dem man Cron-Jobs so verpacken kann, dass Cron nur dann eine E-Mail sendet, wenn ein Fehler aufgetreten ist.

Cronic definiert dabei einen Fehler als jede non-trace Fehlerausgabe oder einen Ergebniscode ungleich Null. Cronic filtert Bash execution traces aus der Fehlerausgabe, sodass Befehle mit execution traces ausgeführt werden können, um die Fehlersuche zu erleichtern. Cronic selbst hat dabei keine Optionen und führt lediglich den darauf folgenden Befehl aus.

0 1 * * * cronic backup

Installiert wird das Werkzeug z. B. mit apt install cronic

Quelle: https://habilis.net/cronic

Tags

cron, cronic, Fehler, Fehlerbehandlung

neffets
Geschrieben von neffets am 15. April 2023 um 19:56

Schau dir mal chronic aus https://joeyh.name/code/moreutils/ an.

tuxfanmatze
Geschrieben von tuxfanmatze am 16. April 2023 um 15:35

Guter Tipp! Vielen Dank.

Markus
Geschrieben von Markus am 21. April 2023 um 12:13

Ich lasse alle Ausgaben in eine Textdatei schreiben und danach wird diese per rclone in einen verschlüsselten Cloud Speicher geschoben.

Diese check ich dann ab und an mal stichprobenartig.