Cronjobs – wiederkehrende Aufgaben unter Linux managen
Cronjobs sind unter Linux das Mittel der Wahl wenn es um automatisierte wiederkehrende Aufgaben geht. Unter Windows nennt sich diese Prinzip "Geplante Aufgaben".
Cronjobs verwalten
Cronjobs werden unter Linux immer für den aktuellen Benutzer verwaltet. Alle als Benutzer angelegte Cronjobs werden auch mit dessen Nutzerrechten ausgeführt.
Der folgende Befehl listet alle für den aktuellen Benutzer angelegten Cronjobs auf:
crontab -l
Um Cronjobs zu verwalten, hilft der folgende Befehl. Dieser öffnet die Konfigurationsdatei im Texteditor vi.
crontab -e
Das Cronjob-Zeitsystem
* * * * * [command]
Minute [0-59] - Stunde [0-23] - Tag [1-31] - Monat [1-12] - Wochentag [0-7 - wobei Sonntag 0 und 7 ist]
Beispiele
jede Stunde
00 */1 * * * [command]
alle 5 Minuten
*/5 * * * * [command]
jede Stunde, zur Minute 10 und 20, an jedem Werktag
10,20 * * 1-5 [command]
Kurzform für gebräuchliche Optionen
[shortform] [command]
@reboot - einmaliges Ausführen beim Start des Rechners
@yearly / @annually - einmal pro Jahr - 0 0 1 1 *
@monthly - einmal pro Monat - 0 0 1 * *
@weekly - einmal pro Woche - 0 0 * * 0
@daily / @midnight - einmal pro Tag - 0 0 * * *
@hourly - einmal pro Stunde - 0 * * * *
Ausgaben umleiten
Ausgabe und Fehler verwerfen
Im folgenden Beispiel wird die Standardausgabe und die Ausgabe eventueller Fehler verworfen. D.h. Sie erhalten in diesem Fall niemals eine Benachrichtigungs-Mail.
[command] >/dev/null 2>&1
Ausgabe verwerfen
Die Ausgabe des asugeführten Befehls wird verworfen, während Fehler weiterhin per E-Mail zugestellt werden.
[command] >/dev/null
Ausgabe in Datei schreiben
Beachten Sie, dass hierbei die Datei bei jedem Aufruf des Cronjobs überschrieben wird.
[command] > /path/to/file
Ausgabe an Datei anhängen
Ideal um eine Art Logdatei zu erstellen. Bei jedem Aufruf wird die angegebene Datei um die Ausgabe erweitert.
[command] >> /path/to/file
Ausgabe und Fehler in Datei schreiben
Es besteht auch die Möglichkeit neben der Standardausgabe auch noch die produzierten Fehler in die Datei zu schreiben. In diesem Fall funktioniert natürlich aus das Anhängen der Ausgabe an die Datei über den Operator >> um eine Logdatei zu erstellen.
[command] > logfile 2>&1
E-Mail Benachrichtigung
Generell werden Ausgaben der einzelnen Cronjobs immer an die E-Mailadresse des ausführenden Benutzers gesandt. Um die Ausgaben aller Cronjobs an eine bestimmte E-Mailadresse zu senden, setzen Sie folgende Zeile an den Anfang der Crontab-Datei.
MAILTO="admin@domain.com"
Um die Ausgabe eines einzelnen Cronjobs an eine bestimmte E-Mailadresse zu senden, hilft die folgende Zeile:
[command] | mail -s "Subject" admin@domain.com
Beachten Sie, dass im obigen Fall bei jedem Aufruf des Cronjobs, egal ob eine Ausgabe durch das aufgerufene Skript/Program erfolgt, eine E-Mail an die angegebene Adresse gesendet wird.
Möchten Sie nur E-Mails im Fehlerfall erhalten und alle Cronjobs können an die selbe E-Mailadresse senden, ist die folgenden Konfiguration für Sie hilfreich.
MAILTO="admin@domain.com"
[command] >/dev/null
Dabei wird die Standardausgabe verworfen und nur Fehlermeldungen ausgegeben. Diese werden an die in MAILTO spezifizierte E-Mailadresse gesendet.