LinuxTipp

crontab erstellen und konfigurieren

Veröffentlicht

Der System-Prozess cron kann automatisch Aufgaben nach einem festgelegten Zeitplan ausführen. Dieser Zeitplan wird crontab genannt, dies ist auch der Name des Programms, mit dem der Zeitplan bearbeitet werden kann.
Den Inhalt der crontab kann man sich anschauen mit crontab -l.
Eine bestehende crontab kann gelöscht werden mit crontab -r. Mit crontab -i erscheint zuvor eine Abfrage, ob gelöscht werden soll.
Um eine crontab zu bearbeiten, verwendet man crontab -e. Damit wird die bestehende crontab im Standard-Editor geöffnet.

Beispiel:
@reboot /home/nexus/startNexus.sh
30 6 * * 1-5 /home/nexus/nospace_warning.sh >/dev/null 2>&1

Jede Zeile stellt einen Job-Eintrag dar, der von cron verarbeitet wird. Diese Zeilen haben folgendes Format: es sind sechs Spalten, die jeweils durch ein Leerzeichen voneinander getrennt sind; die ersten fünf Spalten enthalten die Informationen, die cron mitteilen, wann der Job ausgeführt werden soll, und die letzte Spalte enthält die Information, was cron ausführen soll.
Format einer crontab-Zeile: m h dom mon dow command
m, eine Zahl oder eine Liste von Zahlen oder ein Bereich von Zahlen, für die Minute der Stunde (0-59);
h, eine Zahl oder eine Liste von Zahlen oder ein Bereich von Zahlen, für die Stunde des Tages (0-23);
dom, eine Zahl oder eine Liste von Zahlen oder ein Bereich von Zahlen, für den Tag des Monats (1-31);
mon, eine Zahl oder eine Liste von Zahlen oder ein Bereich von Zahlen, für den Monat des Jahres (1-12 oder Jan, Feb, Mar, …, Dec);
dow, eine Zahl oder eine Liste von Zahlen oder ein Bereich von Zahlen, für den Tag der Woche (0-7 oder Mon-Sun, wobei 0=Sun, 1=Mon, …, 6=Sat, 7=Sun);
command, der Befehl, der ausgeführt werden soll, genau wie er auf der Befehlszeile angezeigt würde.

Sollen Einträge regelmäßig abgearbeitet werden, können die ersten fünf Felder einer Zeile durch einen speziellen „@Eintrag“ ersetzt werden. Diese Kürzel sparen Zeit und Platz, und sie fördern die Übersichtlichkeit:
@reboot, läuft einmal nach dem Hochfahren des Systems.
@yearly, läuft einmal am Jahresbeginn („0 0 1 1 *“).
@annually, genauso wie @yearly
@monthly, läuft monatlich („0 0 1 * *“).
@weekly, läuft wöchentlich („0 0 * * 0“).
@daily, läuft täglich („0 0 * * *“).
@midnight, genauso wie @daily.
@hourly, läuft stündlich („0 * * * *“).

Die jeweilige Datei für einzelne User liegt unter /var/spool/cron. Man sollte allerdings diese Dateien nicht manuell bearbeiten, sondern nur über das Dienstprogramm crontab pflegen.
Möchte man eine Datei für einen anderen User übernehmen, so kann man sie kopieren mit dem Befehl:
crontab -u <user1> -l | crontab -u <user2>

Unter https://crontab.guru/ (engl.) findet man ein Formular, mit dem man die Definition des Zeiteintrags (ersten fünf Spalten der crontab) prüfen kann. Dieses Tool übersetzt den „verschlüsselten“ Eintrag in einen lesbaren Satz.
Beispiel:
Dieser Eintrag 10 4/2 * * 1-5 wird „übersetzt“ zu „At minute 10 past every 2nd hour from 4 through 23 on every day-of-week from Monday through Friday.
Unter https://crontab.guru/examples.html gibt es eine Liste mit bereits vordefinierten Einträge.