Website-Suche

Cron-Jobs: Komplettes Einsteiger-Tutorial


Cron ist das nützlichste Dienstprogramm in einem Linux- oder UNIX-ähnlichen Betriebssystem, das die Ausführung von Befehlen oder Skripts nach einem bestimmten Zeitplan ohne Benutzereingriff ermöglicht. Die geplanten Befehle und Skripte werden auch als Cron-Jobs bezeichnet. Es wird hauptsächlich zur Automatisierung wiederkehrender Aufgaben wie der Durchführung geplanter Backups, der Bereinigung temporärer Dateien, der Systemwartung und verschiedener anderer wiederkehrender Aufgaben verwendet. Es ähnelt dem Taskplaner im Windows-Betriebssystem.

In diesem Tutorial geben wir Ihnen eine grundlegende Einführung in alles, was Sie zum Planen eines Jobs mit Cron verstehen müssen. Dazu gehören die grundlegende Syntax von Cron, das Bearbeiten der Crontab-Datei, das Planen eines Jobs mit Cron mit einigen Beispielen, das Anzeigen von Cron-Jobs usw.

Grundlagen von Cron Job

Lassen Sie uns einige Grundlagen eines Cronjobs verstehen.

Was ist Crond?

Crond ist der Daemon im Linux-System, der im Hintergrund läuft und jede Minute prüft, ob zu diesem Zeitpunkt ein Job geplant ist. Wenn dies der Fall ist, führt es diese Aufgabe aus, andernfalls bleibt es inaktiv.

Cron-Job-Syntax

Die Syntax für den Cron-Job lautet wie folgt:

* * * * * command/script

Von links:

  • Das erste * entspricht den Minuten (0-59)

  • Das zweite * entspricht den Stunden (0-23)

  • Das dritte * entspricht dem Tag des Monats (1-31)

  • Das vierte * entspricht dem Monat des Jahres (1-12)

  • Das fünfte * entspricht dem Wochentag (0-6, Sonntag bis Samstag)

Um mehrere Werte in einem Feld anzugeben, verwenden Sie die folgenden Operatorsymbole:

  1. Sternchen (*): Um alle möglichen Werte für ein Feld anzugeben

  2. Bindestrich (-): ZurAngabeeines Wertebereichs

  3. Das Komma (,): Zum Angeben einer Werteliste

  4. Trennzeichen (/): Zur Angabe eines Schrittwerts

Bearbeiten der Crontab-Datei

Crontab ist eine Datei, die die geplanten Jobs in einer bestimmten Syntax enthält. Es gibt zwei Arten von Crontab-Dateien; eine für systemspezifische Cron-Jobs und die andere für benutzerspezifische Cron-Jobs.

System-Cron-Jobs

Die systemweiten Cron-Jobs befinden sich in der Datei /etc/crontab und im Verzeichnis /etc/cron.d und werden über /etc/cron ausgeführt .hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly. Nur ein Systemadministrator kann auf diese Dateien zugreifen.

Ein Systemadministrator kann einen Cron-Job mit dem folgenden Befehl definieren:

$ nano /etc/crontab

Hier ist die Syntax des Jobs in der Datei /etc/crontab:

# min hr dayofmonth month dayofweek username command
* * * * * user1 ifconfig

Benutzerspezifische Cron-Jobs

Die benutzerspezifischen Cron-Jobs befinden sich im Verzeichnis /var/spool/cron/crontabs. Obwohl Sie diese Jobs manuell bearbeiten können, wird empfohlen, sie mit dem Befehl crontab -e zu bearbeiten.

Ein Standardbenutzer kann einen Cron-Job mit dem folgenden Befehl definieren:

$ crontab -e

Wenn Sie beispielsweise als „Test“-Benutzer angemeldet sind, wird durch Ausführen des Befehls crontab -e die Crontab-Datei für den „Test“-Benutzer bearbeitet. Wenn Sie als Root-Benutzer angemeldet sind, bearbeitet der Befehl crontab -e gleichermaßen die Crontab-Datei für den Root-Benutzer.

Geben Sie den folgenden Befehl im Terminal ein, um die Crontab-Datei für einen anderen Benutzer zu bearbeiten:

$ sudo crontab -u <username> -e

Wenn Sie beispielsweise als Benutzer „test1“ angemeldet sind und die Crontab-Datei für den Benutzer „test2“ bearbeiten möchten, lautet der Befehl:

$ sudo crontab -u test2 -e

Hier ist die Syntax des Cron-Jobs, der in der Crontab-Datei hinzugefügt werden kann:

# m h dayofmonth month dayofweek command
* * * * * ifconfig

Crontab-Befehle

Der Befehl crontab wird zum Bearbeiten, Auflisten und Entfernen der Cron-Jobs verwendet:

  • crontab -e Zum Bearbeiten der Crontab-Datei des aktuellen Benutzers

  • crontab -l Zum Anzeigen des Inhalts der Crontab-Datei

  • crontab -u [Benutzername] Um die Crontab-Datei eines anderen Benutzers zu bearbeiten

  • crontab -r Zum Entfernen der Crontab-Datei des aktuellen Benutzers

  • crontab -i Zum Anzeigen einer Eingabeaufforderung vor dem Entfernen der Crontab-Datei des aktuellen Benutzers

Planen eines Jobs mit Cron

Mit Cron können Sie einen Job zu einer bestimmten Zeit, an einem bestimmten Datum und in bestimmten Intervallen mit einer Mindesteinheit in Minuten ausführen, d. h. Sie können einen Job jede Minute ausführen.

Um einen Job mit Cron zu planen, öffnen Sie die Crontab-Datei mit der im vorherigen Abschnitt beschriebenen Methode. Sobald Sie die Crontab-Datei geöffnet haben, werden Sie aufgefordert, einen Texteditor auszuwählen. Geben Sie eine Zahl ein, um Ihren bevorzugten Texteditor auszuwählen. Scrollen Sie nach unten bis zum Ende der Datei und fügen Sie Jobs in der oben beschriebenen Syntax hinzu. Jede Zeile in einer Datei gibt einen Befehl an. Die ersten fünf Einträge in der Zeile geben die geplante Zeit an und der letzte Eintrag gibt an, welcher Befehl oder welches Skript ausgeführt werden soll.

Beispiel:

Die folgende Zeile in der Crontab-Datei plant den Cron-Job so, dass er den Befehl/das Skript alle 30 Minuten nach 5 Stunden an jedem Wochentag von Montag bis Samstag ausführt.

*/30 5 * * 1-6 command/script

Minuten

In diesem Feld geben wir die Minuten an, in denen der Befehl ausgeführt werden soll. Der Wert liegt zwischen 0 und 59. Das * in diesem Feld bedeutet, dass der Job jede Minute ausgeführt wird. In der obigen Crontab-Zeile weist */30 den Cron-Job an, den angegebenen Befehl/das angegebene Skript alle 30 Minuten auszuführen.

Stunden

In diesem Feld geben wir die Stunden an, zu denen der Befehl ausgeführt werden soll. Der Wert liegt zwischen 0 und 23. Das * in diesem Feld bedeutet, dass der Job stündlich ausgeführt wird. In der obigen Crontab-Zeile weist der Wert 5 den Cron-Job an, den angegebenen Befehl/das angegebene Skript alle fünf Stunden auszuführen.

Tag des Monats

In diesem Feld geben wir die jeweiligen Tage des Monats an, an denen der Befehl ausgeführt werden soll. Der Wert liegt zwischen 1 und 31. Das * in diesem Feld bedeutet jeden Tag. In der obigen Crontab-Zeile weist das * den Cron-Job an, jeden Tag den angegebenen Befehl/das angegebene Skript auszuführen.

Monat des Jahres

In diesem Feld geben wir die jeweiligen Monate an, in denen der Befehl ausgeführt werden soll. Die Angabe erfolgt zwischen 1 und 12. Das * in diesem Feld bedeutet jeden Monat. In der obigen Crontab-Zeile weist das * den Cron-Job an, jeden Monat den angegebenen Befehl/das angegebene Skript auszuführen.

Wochentag

In diesem Feld geben wir die jeweiligen Wochentage an, an denen der Befehl ausgeführt werden soll. Sie wird von Sonntag bis Samstag von 0 bis 6 angegeben (0 für Sonntag und 6 für Samstag). Das * in diesem Feld bedeutet jeden Tag in einer Woche. In der obigen Crontab-Zeile weist das * den Cron-Job an, den angegebenen Befehl/das angegebene Skript jeden Tag in einer Woche auszuführen.

Beispiele für Cron-Jobs

Hier ein paar Beispiele für Cron-Jobs:

Führen Sie alle 15 Minuten einen Cronjob aus

Um einen Cron-Job so zu planen, dass er alle 15 Minuten ausgeführt wird, fügen Sie die folgende Zeile in die Crontab-Datei ein:

*/15 * * * * command/script

Führen Sie jeden Tag um 5 Uhr morgens einen Cronjob aus

Um einen Cron-Job so zu planen, dass er jeden Tag um 5 Uhr morgens ausgeführt wird, fügen Sie die folgende Zeile in die Crontab-Datei ein:

0 5 * * * command/script

Führen Sie jeden Tag um 17:00 Uhr einen Cronjob aus

Um einen Cron-Job so zu planen, dass er jeden Tag um 17:00 Uhr ausgeführt wird, fügen Sie die folgende Zeile in die Crontab-Datei ein:

0 17 * * * command/script

Führen Sie am ersten Tag jedes Monats um 9 Uhr morgens einen Cronjob aus.

Um einen Cron-Job so zu planen, dass er am ersten Tag jedes Monats um 9 Uhr ausgeführt wird, fügen Sie die folgende Zeile in die Crontab-Datei ein:

0 9 1 * * command/script

Führen Sie stündlich am 15. März einen Cronjob aus

Um jeden 15. März stündlich einen Cron-Job zu planen, fügen Sie die folgende Zeile in die Crontab-Datei ein:

0 * 15 3 * command/script

Führen Sie alle 5 Stunden einen Cronjob aus

Um alle 5 Stunden einen Cron-Job zu planen, fügen Sie die folgende Zeile in die Crontab-Datei ein:

0 */5 * * * command/script

Führen Sie alle 15 Minuten einen Cronjob aus

Um einen Cron-Job so zu planen, dass er alle 15 Minuten ausgeführt wird, fügen Sie die folgende Zeile in die Crontab-Datei ein:

*/15 * * * *

Strings verwenden

Die folgenden Zeichenfolgen können auch zur Definition eines Jobs verwendet werden:

  1. @hourly: Um einen Job einmal pro Stunde auszuführen, d. h. „0 * * * *

  2. @midnight: Um einen Job einmal täglich auszuführen, d. h. „0 0 * * *

  3. @daily: wie Mitternacht

  4. @weekly: Um einen Job einmal pro Woche auszuführen, d. h. „0 0 * * 0

  5. @monthly: Um einen Job einmal im Monat auszuführen, d. h. „0 0 1 * *

  6. @annually: Um einen Job einmal im Jahr auszuführen, d. h. „0 0 1 1 *

  7. @yearly: dasselbe wie @annually

  8. @reboot: Um einen Job einmal bei jedem Start auszuführen

Um beispielsweise jede Woche ein Skript oder einen Befehl auszuführen, würde der Eintrag in der Crontab-Datei wie folgt lauten:

@weekly command/script

Vordefinierte Cron-Verzeichnisse

Unter Linux gibt es einige vordefinierte Cron-Verzeichnisse, in denen die gespeicherten Skripte automatisch ausgeführt werden. Wenn wir ein Skript in diesen Verzeichnissen ablegen, wird es automatisch zum konfigurierten Zeitpunkt ausgeführt.

  • /etc/cron.daily

  • /etc/cron.hourly

  • /etc/cron.monthly

  • /etc/cron.weekly

Um beispielsweise ein Skript einmal im Monat auszuführen, müssen Sie es in /etc/cron.monthly platzieren.

Cron-Jobs anzeigen

Jobs für den aktuellen Benutzer anzeigen

Verwenden Sie den folgenden Befehl, um alle geplanten Cron-Jobs für den aktuellen Benutzer anzuzeigen:

$ crontab -l

Jobs für die Root-Benutzer anzeigen

Um alle geplanten Jobs des Root-Benutzers anzuzeigen, geben Sie den folgenden Befehl im Terminal ein:

$ cat /etc/crontab

Sie müssen sich als Root-Benutzer anmelden oder den Befehl als sudo ausführen.

Jobs für die anderen Benutzer anzeigen

Um alle geplanten Jobs eines bestimmten Benutzers anzuzeigen, geben Sie im Terminal den folgenden Befehl ein und ersetzen Sie den durch den tatsächlichen Benutzernamen:

$ sudo crontab -u <username> -l

Um diesen Befehl auszuführen, benötigen Sie Sudo-Berechtigungen.

Stündliche Cron-Jobs anzeigen

Um alle Cron-Jobs anzuzeigen, die für die stündliche Ausführung konfiguriert sind, geben Sie den folgenden Befehl im Terminal ein:

$ ls -la /etc/cron.hourly

Sehen Sie sich tägliche Cron-Jobs an

Um alle Cron-Jobs anzuzeigen, die für die tägliche Ausführung konfiguriert sind, geben Sie den folgenden Befehl im Terminal ein:

$ ls -la /etc/cron.daily/

Sehen Sie sich wöchentliche Cron-Jobs an

Um alle Cron-Jobs anzuzeigen, die für die wöchentliche Ausführung konfiguriert sind, geben Sie im Terminal den folgenden Befehl ein:

$ ls -la /etc/cron.weekly/

Monatliche Cron-Jobs anzeigen

Um alle Cron-Jobs anzuzeigen, die für die monatliche Ausführung konfiguriert sind, geben Sie den folgenden Befehl im Terminal ein:

$ ls -la /etc/cron.monthly/

Sichern Sie alle Cron-Jobs

Es wird empfohlen, eine Sicherungskopie aller Cron-Jobs in einer Datei aufzubewahren, damit Sie sie im Falle einer Löschung wiederherstellen können. Um eine Sicherungskopie aller aktuellen Jobs zu erstellen, verwenden Sie den Umleitungsoperator, um die Ausgabe von crontab -l in eine Datei umzuleiten.

$ crontab -l > backup_cron.txt

Entfernen aller geplanten Cron-Jobs

Um alle geplanten Cron-Jobs zu entfernen, verwenden Sie das Flag -r wie folgt:

$ crontab -r

Cron-Berechtigung

Wir können den Zugriff auf den Befehl crontab über zwei Dateien einschränken: /etc/cron.allow und /etc/cron.deny.

  • /etc/cron.allow – Fügen Sie Benutzer hinzu (einen pro Zeile), denen Sie Zugriff auf Crontab-Befehle gewähren möchten. Diese Benutzer können Zeitplanjobs ausführen.

  • /etc/cron.deny – Fügen Sie Benutzer hinzu (einen pro Zeile), denen Sie den Zugriff auf Crontab-Befehle verweigern möchten. Diese Benutzer können keine geplanten Jobs ausführen.

Crontab-Syntaxgeneratoren

Es gibt einige Websites, die die Generierung von Syntax für Crontabs ermöglichen. Diese Websites erleichtern die Generierung von Crontab-Ausdrücken, ohne sich die Syntax merken zu müssen. Allerdings gibt es verschiedene Websites für Syntaxgeneratoren wie crontabgenerator.com, crontab-generator.org und cronmaker.com. Das, was ich am meisten bevorzuge und als hilfreich empfand, ist crontab.guru. Basierend auf Benutzereingaben wird ein Crontab-Ausdruck generiert, den Sie kopieren und in die Crontab-Datei einfügen können.

Abschluss

In diesem Tutorial haben wir die Grundlagen von Cron-Jobs, seine Syntax und die Einrichtung erklärt. Wir haben auch besprochen, wie Sie Cron-Jobs anzeigen, ein Backup erstellen und sie entfernen, wenn sie nicht mehr benötigt werden.

Verwandte Artikel: