Cronjob Ausgabe in datumsbasierte Datei loggen

Cronjobs erleichtern einem enorm die Arbeit. Vor allem wenn zeitintensive und sich immer wiederholende Aufgaben anstehen. Die automatisierten Aufgaben können zwar von Haus aus jede Dateiausgabe per E-Mail versenden, doch wer möchte schon 200 E-Mails zusätzlich erhalten?

Richten wir im ersten Schritt zuerst einen einfachen Cronjob ein. In meinem Beispiel wird das Script backup_db.sh einmal am Tag um 05:15 Uhr aufgerufen.

15 05 * * * /usr/bin/bash /home/netzware/scripte/backup_db.sh 

Zum einfachen Loggen aller Ausgaben reicht die Anweisung >> backup_db.loh 2>&1 hinter dem Befehl aus:

15 05 * * * /usr/bin/bash /home/netzware/scripte/backup_db.sh >> /home/netzware/scripte/backup_db.log 2>&1

Es werden damit alle Ausgaben in die Datei scripte/backup_db.log gespeichert und bei jedem Aufruf hinten (>>) angefügt. Bei ein paar Log Ausgaben kann das ausreichen. Wer mehrere Log Ausgaben eingebaut hat, verliert bei der Menge jedoch schnell den Überblick.

Cronjob mit datumbasierter Log Datei

Datumsbasierte Log Datei für mehr Übersicht

So ist eine datumsbasierte Log Datei viel übersichtlicher. Eine Log Datei pro Tag spart einem viel Arbeit auf der Suche nach Fehlern, wenn man den genauen Tag kennt an dem ein Fehler passiert ist.

Dazu weisen wir den Cronjob an, ein Datum in den Dateinamen zu schreiben:

15 05 * * * /usr/bin/bash /home/netzware/scripte/backup_db.sh >> /home/netzware/scripte/backup_db_`date +%Y%m%d`.log 2>&1

Mit der zusätzlichen Angabe von date +%Y%m%d wird das aktuelle Datum in den Dateinamen geschrieben. Damit sieht der Dateiname der Log Datei ungefähr so aus: scripte/backup_db_20220424.log (Datum: 2022-04-24)

Übrigens sorgt die Angabe 2>&1 dafür, dass alle Ausgaben (Einfache und Cronjob Fehler) in die angegebene Log Datei geschrieben werden.

Leave a Reply