Dieser Artikel erklärt das Planen von Aufgaben und das Ausführen von Skripten in regelmäßigen Abständen mit Cron-Jobs.
Was ist Cron?
Cron ist ein Task-Scheduling-Programm, das als Prozess im Hintergrund läuft. Es kann verwendet werden, um in regelmäßigen Abständen bestimmte Jobs auszuführen, die mit seinem vordefinierten Regelwerk geplant sind. Cron ist auf den meisten Linux-Distributionen vorinstalliert oder in den Repositorys zur manuellen Installation verfügbar.
Cron-Voreinstellungen
Cron unter Ubuntu wird mit einer Reihe vordefinierter Scheduler geliefert. Sie können sie überprüfen, indem Sie den folgenden Befehl ausführen:
$ ls /etc/cron.*Normalerweise sind diese Ordner „/etc/cron.stündlich“, „/etc/cron.täglich“, „/etc/cron.monatlich“ und „/etc/cron.wöchentlich".
Legen Sie einfach Ihre gewünschten Skripte in einen dieser Ordner, um automatisierte Aufgaben stündlich, täglich, monatlich oder wöchentlich auszuführen.
Beachten Sie, dass Cron standardmäßig die Shell "/bin/sh" verwendet. Wenn Sie „/bin/bash“ als Shell in Cron-Skripten verwenden möchten, müssen Sie „!# /bin/bash“ Hashbang am Anfang der Skriptdatei oder definieren Sie Shell als „SHELL=/bin/bash“ Variable in der ersten Zeile in einem geplanten Bash-Skript. Das Überschreiben der Umgebungsvariable „SHELL“ funktioniert auch für den unten erläuterten Crontab-Editor.
Möglicherweise sind nicht alle Systemumgebungsvariablen für die Cron-Jobs verfügbar. Daher ist es im Allgemeinen eine gute Idee, wichtige Umgebungsvariablen manuell in einem von cron geplanten Skript zu definieren.
Crontab
Crontab ermöglicht es Ihnen, Ihre eigenen geplanten Aufgaben zu definieren. Sie können damit Cron-Zeitpläne konfigurieren, die sich von den vier oben erläuterten Standard-Cron-Voreinstellungen unterscheiden.
Um eine geplante Aufgabe in Crontab festzulegen, starten Sie zuerst den Crontab-Editor mit dem folgenden Befehl:
$crontab -eAm Ende der Datei können Sie nun einen Eintrag in folgendem Format hinzufügen:
Minute Stunde Tag Monat Wochentag /full/path/to/script.SchWo:
- Minute: beliebiger Wert im Bereich von 0 bis 59
- Stunde: jeder Wert im Bereich von 0 bis 23, 0 steht für Mitternacht
- Tag: beliebiger Wert im Bereich von 1 bis 31
- Monat: beliebiger Wert im Bereich 1 bis 12
- Wochentag: beliebiger Wert im Bereich von 0 bis 6, wobei 0 für Sonntag steht
Der crontab-Eintrag unten macht einen Screenshot von Ihrem Desktop und speichert ihn einmal um 15:13 Uhr am 2. März und jeden Dienstag im März um 15:13 Uhr in Ihrem Home-Verzeichnis.
13 15 2 3 2 scrotUm alle crontab-Einträge aufzulisten, verwenden Sie den folgenden Befehl:
$ crontab -lMehr Beispiele
Cron-Aufgaben lassen sich am besten anhand von Beispielen erklären. Nachfolgend finden Sie einige Beispiele, die regelmäßig Screenshots Ihres Desktops erstellen und im Home-Ordner speichern.
Neben den fünf Scheduling-Variablen verwendet cron auch eine spezielle Zeichenfolge, um Jobs zu planen. Diese Saiten sind:
- @hourly: Job wird stündlich ausgeführt
- @daily / @midnight: Job wird jeden Tag ausgeführt
- @weekly: Job läuft einmal pro Woche
- @monthly: Job läuft einmal im Monat
- @yearly / @anually: Job läuft einmal im Jahr
- @reboot: Job wird einmal bei jedem Neustart / Login ausgeführt
Der folgende crontab-Eintrag macht bei jedem Neustart einmal einen Screenshot:
@reboot scrotSie können „@reboot“ durch alle anderen oben genannten speziellen Zeichenfolgen ersetzen replace.
Wenn Sie anstelle einer der fünf Variablen ein Sternchen oder Platzhalter verwenden, wird der Job für alle neuen Instanzen dieser Variablen wiederholt repeat. Der folgende Eintrag macht jede Minute einen Screenshot:
* * * * *Jede Stunde:
0 * * * * scrotTäglich um 18:00 Uhr:
0 18 * * * scrotJeden Monat am 6. um 18:00 Uhr:
0 18 6 * * scrotVerwenden Sie „/“, um ein Skript in einem festen periodischen Intervall von 30 Minuten auszuführen (wird alle 30 Minuten ausgeführt):
*/30 * * * * scrotSie können durch Kommas getrennte Variablen verwenden, um die wiederholte Ausführung des Skripts in regelmäßigen Abständen zu definieren. Im folgenden Beispiel wird jede 1., 4. und 5. Minute einer neuen Stunde ein Screenshot Ihres Desktops erstellt.
1,4,5 * * * *Crontab-Einträge überprüfen
Das Definieren von crontab-Einträgen kann schwierig sein, aber sie zu debuggen oder zu überprüfen, ob sie mit den richtigen Zeitstempeln funktionieren, ist noch schwieriger. Eine Möglichkeit besteht darin, eine virtuelle Maschine zu verwenden und Zeitstempel eines Skripts zu protokollieren, das regelmäßig für einen Cron-Job ausgeführt wird, indem Sie so etwas wie den Befehl „date“ einfügen und die Ausgabe in eine Textdatei umleiten. Eine bessere Lösung ist jedoch die Nutzung eines der zahlreichen Online-Cronjob-Testdienste, die im Internet verfügbar sind. Ich empfehle, eine Cron-Tester-Website zur Verfügung zu stellen Hier ein Versuch.
Fazit
Das Ausführen von Cron-Jobs ist eine hervorragende Möglichkeit, sich wiederholende Aufgaben zu automatisieren, insbesondere auf Servern. Das Tool ist extrem leistungsstark und anpassbar. Es ist jedoch wichtig sicherzustellen, dass Ihre Scheduler-Definition korrekt funktioniert, insbesondere wenn es geschäftskritische Aufgaben gibt.