Zum Hauptinhalt springen

Grundlegende Cron-Befehle

Wenn Sie die Crontab-Datei bearbeiten möchten (eine Datei mit Anweisungen zur Ausführung geplanter Aufgaben), geben Sie den folgenden Befehl im Terminal ein:

crontab -e

Das Ergebnis sieht folgendermaßen aus:

Crontab bearbeiten

Höchstwahrscheinlich wird der vi-Editor geöffnet. Da dieser Editor häufig bei der Arbeit mit Cron verwendet wird, empfehlen wir, sich mit den grundlegenden vi-Befehlen vertraut zu machen.

Wenn Sie die Crontab-Datei eines anderen Benutzers bearbeiten möchten, verwenden Sie den Befehl crontab -u username -e. Nur Superuser können die Dateien anderer Benutzer bearbeiten, daher müssen Sie sudo su vor dem Befehl eingeben.

Crontab eines anderen Benutzers bearbeiten

Wenn Sie die aktuelle Crontab-Datei des aktuellen Benutzers löschen möchten, geben Sie den folgenden Befehl ein:

crontab -r

Der folgende Befehl ist ähnlich wie der -r-Befehl, fordert aber eine Bestätigung vor dem Löschen der Crontab-Datei an:

crontab -i

Wenn Sie den Inhalt der geöffneten Crontab-Datei anzeigen möchten, geben Sie den folgenden Befehl im Terminal ein:

crontab -l

Dieser Befehl kann auch anzeigen, ob Sie Crontab-Dateien haben. Wenn keine Dateien erstellt wurden, wird die folgende Meldung angezeigt:

Keine Crontab-Dateien

Um Crontab-Dateien anderer Benutzer anzuzeigen, geben Sie den folgenden Befehl als Superuser ein:

crontab -u username -l
Crontab eines anderen Benutzers anzeigen

Cron-Syntax

Eine Crontab-Datei besteht aus zwei Teilen: dem Zeitplan und dem Befehl. Der Befehl sieht folgendermaßen aus:

* * * * * /bin/sh backup.sh

Zum Beispiel:

  • * * * * /bin/sh backup.sh führt die Sicherung jede Minute aus.
  • 30 18 * * * rm /home/sydtesting/tmp/* bedeutet, dass tmp-Dateien aus /home/sydtesting/tmp jeden Tag um 18:30 Uhr gelöscht werden.

Die Crontab-Datei hat fünf Felder. Jedes Feld wird durch ein Sternchen dargestellt und definiert Datum und Uhrzeit der Aufgabe, die regelmäßig ausgeführt werden soll.

Crontab-Felder
  • Minuten — die Minute der Stunde, in der der Befehl ausgeführt wird (von 0 bis 59).
  • Stunden — die Stunde, in der der Befehl startet (von 0 bis 23).
  • Tag des Monats — an welchem Tag des Monats der Befehl ausgeführt werden soll (von 1 bis 31).
  • Monat — in welchem Monat der Befehl ausgeführt wird (von 1 bis 12).
  • Wochentag — an welchem Wochentag der Befehl ausgeführt werden soll (von 0 bis 6, 0 — Sonntag).

Bestimmte Symbole haben ebenfalls eine Bedeutung. Verwenden Sie:

  • Sternchen (*) zur Angabe von Planungsparametern.
  • Komma (,) zur Angabe von zwei oder mehr Ausführungszeitoptionen.
  • Bindestrich (-) zur Festlegung eines Ausführungszeitbereichs.
  • Schrägstrich (/) zur Erstellung bestimmter Zeitintervalle innerhalb eines bestimmten Bereichs.
  • Last (L) zur Angabe des letzten Wochentags in einem bestimmten Monat. Zum Beispiel bedeutet 3L den letzten Mittwoch.
  • Weekday (W) zur Angabe des nächsten Werktags zu einem bestimmten Zeitpunkt. Zum Beispiel bedeutet 1W, dass das Skript am nächsten Werktag zum ersten Tag ausgeführt wird; wenn der 1. ein Sonntag ist, wird der Befehl am Montag (dem 2.) ausgeführt.
  • Hash (#) zur Angabe des Wochentags im Monatsfeld (von 1 bis 5). Zum Beispiel bedeutet 1#2 den zweiten Montag.
  • Fragezeichen (?) zur Auswahl eines bestimmten Tages für die Skriptausführung. Für den korrekten Betrieb müssen Sie entweder den Tag des Monats oder die Tagesnummer angeben — Sie können nicht beides gleichzeitig angeben. Dieses Symbol ermöglicht es, einen Wert leer zu lassen.

Beispiele

Beachten Sie, dass die Befehlsausgabe automatisch an die lokale E-Mail gesendet wird. Wenn Sie diese E-Mails nicht erhalten möchten, fügen Sie >/dev/null 2>&1 zur Syntax hinzu, wie im Beispiel gezeigt:

0 5 * * * /root/backup.sh >/dev/null 2>&1

Wenn Sie möchten, dass die Ausgabe an eine andere E-Mail-Adresse gesendet wird, können Sie MAILTO hinzufügen, gefolgt von der E-Mail-Adresse. Zum Beispiel:

MAILTO="[email protected]"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Weitere Syntaxbeispiele:

AusdruckErgebnis
0 0 * * * /bin/sh backup.shDatenbanksicherung um Mitternacht einmal täglich durchführen.
0 6,18 * * * /bin/sh backup.shDatenbanksicherung zweimal täglich um 6:00 und 18:00 Uhr durchführen.
0 */6 * * * /scripts/monitor.shAlle sechs Stunden eine Überwachung durchführen.
*/10 * * * * /home/user/script.shEinen Cron-Job für die Skriptdatei im Home-Verzeichnis alle 10 Minuten ausführen.
0 * 20 7 * /bin/sh backup.shDatenbanksicherung jede Stunde am 20. Juli ausführen.
0 0 * * 2 * /bin/shDatenbanksicherung um Mitternacht jeden Dienstag ausführen.
* * * 1,2,5 * /script/script.shDen Befehl im Januar, Februar und Mai ausführen.
10-59/5 5 * * * /home/user/script.shDen Befehl alle 5 Minuten um 5:00 Uhr morgens ausführen, beginnend ab 5:10 Uhr.
0 8 1 */3 * /home/user/script.shDen Befehl vierteljährlich am 1. Tag um 8:00 Uhr ausführen.
* * * * * /scripts/script.sh; /scripts/scrit2.shMehrere Jobs in einem Cron-Job planen.
@reboot /scripts/script.shEine bestimmte Aufgabe bei jedem Systemstart ausführen.
0 0 1 * * /home/user/script.shDen Befehl am ersten Tag jedes Monats ausführen.