Cronjob auf Debian/Ubuntu einrichten

Cronjobs oder auch Cron, in Unixsystemen auch bekannt als cron-Deamon bzw. crontab ist eine zeitgesteuerte Jobsteuerung. Das bedeutet, dass bestimmte Aufgaben zu bestimmten Zeitpunkten ausgeführt werden.
Durch diese zeitgesteuerten Aufgaben werden unter anderem alte Aufzeichnungsdateien, Backups und auch Updates ausgeführt.
Hier erkläre ich, wie man neue Cronjobs erstellen, vorhandene bearbeiten und alte löschen kann. (Debian Basis)

Werbung

Ist das Gerät 24h am Tag, 7 Tage die Woche eingeschaltet?

Cronjobs sind sozusagen stur bei den Ausführungszeiten. Ist der Computer zu der Zeit einer Cronjobausführungszeit nicht eingeschalten, so wird dieser Cronjob auch nicht ausgeführt. Ebenso wird der Cronjob beim Einschalten des Gerätes nicht nachgeholt. Hierfür gibt es Anacrons.

Aufbau

Cronjob Ausführungszeiten sind recht simpel aufgebaut. Mit der folgenden Grafik lässt sich ein Cronjob leicht nachvollziehen.



Die erste Zeile, beginnend mit einer Raute (#) ist ein Kommentar. Diese dient nur als Merkhilfe.
In der zweiten Zeile befindet sich der Cronjob-Befehl. Das „> /dev/null 2>&1“ am Ende bedeutet, dass der Besitzer/Benuter des Cronjobs im Erfolgs- oder Fehlerfall nicht benachrichtigt wird.
Unter Zeile 2 befindet sich, durch Farben gekennzeichnet, die jeweilige Zeitfunktion. Diese dient hier nur als Beispiel und darf nicht übernommen werden.
Angewendet würden die Cronjob Befehle in der Datei so aussehen:

#M S T M W Befehl
30 3 * * * /home/user/script/backup.sh > /dev/null 2>&1 #Backup täglich um 3:30 ausführen
*/5 * * * * php /var/www/CLI-cronjob.php > /dev/null 2>&1 #PHP Cronjob alle 5 Minuten ausführen
15,45 0,2,4,6,20,22 */2 * * clean #Befehl nur zu bestimmten Zeiten ausführen

Kurzformen

Um das Gewirr mit Zahlen, Beistrichen, Bindestrichen und Schrägstrichen zu erleichtern, wurden hierfür Kurzformen entwickelt.

String Bedeutung Entspricht
@reboot Einmalig beim Start
@yearly Einmal im Jahr 0 0 1 1 *
@annually Einmal im Jahr 0 0 1 1 *
@monthly Einmal im Monat 0 0 1 * *
@weekly Einmal pro Woche 0 0 * * 0
@daily Einmal pro Tag 0 0 * * *
@midnight Einmal pro Tag 0 0 * * *
@hourly Einmal pro Stunde 0 * * * *

Wo erstelle ich überhaupt neue Cronjobs?

Dafür gibt es verschiedene Orte.
Um die Crondatei des aktuellen Benutzers zu bearbeiten, musst du folgenden Befehl in der Kommandozeile eingeben:

crontab -e

Nach der Eingabe öffnet sich der Standardeditor mit dem Inhalt der aktuellen Cron Datei. Am ende der Datei (unten) kannst du dann deinen Befehl hinzufügen.

Willst du die Crondatei eines anderen Benutzers bearbeiten, so muss der Befehl so ausssehen.

crontab -u benutzername -e

Dies würde den Standardeditor mit dem Inhalt der Crondatei des Benutzers benutzername öffnen.

Systemweiter Cronjob

Es gibt aber auch noch Systemweite Cronjobs. Diese unterscheiden sich leicht von Benutzercronjobs. Vor dem Befehl muss der Benutzername angegeben werden, unter dem der Cronjob ausgeführt werden soll.
Der Systemweite Cronjob befindet sich in /etc/crontab

Ein neuer Cronjob würde so aussehen.

#M S T M W User Befehl
30 3 * * * www-data clean #Befehl täglich um 3:30 als www-data ausführen

Ich hoffe, ich konnte euch den Cron Deamon von Unix näher bringen 😉

Nähere Informationen für Ubuntusysteme gibt es unter Ubuntuusers.de Wikipedia.

Icon Chronological review by Centigrade | The Centigrade MedicalSeries

Cronjob auf Debian/Ubuntu einrichten
5 (100%) 7 votes

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.