Was ist ein Cron-Job: Verständnis der Cron-Syntax und Konfiguration von Cron-Jobs
Ein Cron-Job ist eine Aufgabe, die mit Cron erstellt wurde, einem Tool zur Planung und Automatisierung zukünftiger Aufgaben auf Unix-ähnlichen Betriebssystemen.
Das Einrichten von Cron-Jobs ist sehr vorteilhaft, da Sie wiederholende Aufgaben nicht manuell ausführen müssen, was Effizienz gewährleistet und menschliche Fehler minimiert.
In diesem Artikel erklären wir die Grundlagen von Cron-Jobs, ihre Arten, Syntax, spezielle Zeichenfolgen und Berechtigungen. Wir werden auch die besten Praktiken für Cron-Jobs teilen und Befehlsbeispiele bereitstellen, um Ihnen zu helfen zu verstehen, wie man Cron-Jobs verwendet.
Inhaltsverzeichnis
Wofür sind Cron-Jobs gedacht?
Mit Cron-Jobs können Systemadministratoren Wartungsarbeiten, Überwachung des Festplattenspeicherplatzes und Backups in regelmäßigen Abständen automatisieren. Dies macht Cron-Jobs ideal für Computer, die rund um die Uhr arbeiten, wie zum Beispiel ein Virtual Private Server. Sie sind auch nützlich für Webentwickler, da sie gleichzeitig Cron-Jobs zu verschiedenen Intervallen einrichten können, um eine Website zu sichern, auf defekte Links zu prüfen und ihren Cache zu leeren.
Wie Cron-Jobs funktionieren
Cron ist ein Daemon – ein Hintergrundprozess, der nicht-interaktive Aufgaben ausführt. Eine Cron-Datei ist eine Textdatei, die Befehle enthält, die periodisch zu einer bestimmten Zeit ausgeführt werden sollen.
Die Cron-Tabelle oder Crontab-Konfigurationsdatei ist standardmäßig /etc/crontab. Nur Systemadministratoren können die System-Crontab-Datei bearbeiten. Da Unix-ähnliche Betriebssysteme mehrere Administratoren unterstützen, können Benutzer jedoch ihre eigenen Dateien erstellen, um spezifische Aufgaben zu planen.
Obwohl sie praktisch sind, gibt es mehrere Einschränkungen bei Cron-Jobs:
- Das kürzeste Intervall zwischen den Aufgaben beträgt 60 Sekunden. Benutzer können die Intervalleinstellungen für Cron-Jobs nur auf eine Minute oder mehr setzen.
- Verpasste Jobs müssen manuell zurückgesetzt werden. Administratoren können Cron-Jobs nicht auf mehrere Computer in einem Netzwerk verteilen. Wenn also der Cron des Computers abstürzt, werden die geplanten Aufgaben nicht ausgeführt. Sie müssen die verpassten Aufträge manuell neu starten.
- Kein automatischer Wiederholungsmechanismus. Cron ist darauf ausgelegt, zu einem bestimmten Zeitplan zu laufen. Wenn eine Aufgabe fehlschlägt, wird sie erst zur nächsten geplanten Zeit ausgeführt. Dies macht Cron ungeeignet für schrittweise Aufgaben.
- Keine Umgebungsvariablen. Crontab kann die Umgebungsvariablen aus mehreren Dateien, die Konfigurationsdaten enthalten, die zum ordnungsgemäßen Ausführen einiger Anwendungen erforderlich sind, nicht lesen.
Wenn Sie eine einmalige Aufgabe automatisieren möchten, empfehlen wir stattdessen die Verwendung einer anderen Planungsmethode.
Profi-Tipp
Bevor Sie einen Cron-Job erstellen, stellen Sie sicher, dass Ihr Skript funktioniert. Um das zu tun, öffnen Sie die Datei in Ihrem Browser per URL oder führen Sie sie über SSH aus, abhängig vom Typ des Skripts. Wenn es nicht funktioniert, wenden Sie sich an das Support-Team Ihres Hosting-Anbieters, um Hilfe zu erhalten.
Crontab-Syntax
Bevor Sie Cron-Jobs einrichten, müssen Sie die Syntax und Formatierung von Cron verstehen, um sicherzustellen, dass das Skript ordnungsgemäß ausgeführt wird. Die Syntax von Crontab besteht aus fünf Feldern mit den folgenden möglichen Werten:
- Minute. Die Minute der Stunde, in der der Befehl ausgeführt wird, im Bereich von 0-59.
- Stunde. Die Stunde, in der der Befehl ausgeführt wird, im Bereich von 0-23 in einer 24-Stunden-Notation.
- Tag des Monats. Das Datum des Monats, an dem der Benutzer den Befehl ausführen möchte, im Bereich von 1-31.
- Monat. Der Monat, in dem der Benutzer den Befehl ausführen möchte. Er reicht von 1-12, was Januar bis Dezember darstellt.
- Tag der Woche. Der Wochentag, an dem ein Befehl ausgeführt werden soll, im Bereich von 0-6. Die Werte stehen für Sonntag-Samstag. In einigen Systemen repräsentiert der Wert 7 den Sonntag.
Wichtig! Seien Sie vorsichtig, wenn Sie Cron-Jobs für verschiedene Zeitzonen planen, und stellen Sie sicher, dass Ihre Konfiguration korrekt ist.
Zusätzlich zur Syntax müssen Sie die Cron-Job-Operator verstehen, um den Wert in jedem Feld zu ändern. Sie müssen diese Operatoren korrekt in allen Crontab-Dateien verwenden, um sicherzustellen, dass Ihre Befehle ausgeführt werden:
- Sternchen (*). Dieser Operator bezeichnet alle möglichen Werte in einem Feld. Schreiben Sie beispielsweise ein Sternchen in das Feld Minute, um den Cron-Job jede Minute auszuführen.
- Komma (,). Ein Operator zum Auflisten mehrerer Werte. Schreiben Sie beispielsweise 1,5 im Wochentag-Feld für die Ausführung des Jobs jeden Montag und Freitag.
- Bindestrich (-). Benutzer können einen Bereich von Werten bestimmen. Schreiben Sie 6-9 in das Feld Monat, um einen Cron-Job von Juni bis September einzurichten.
- Trennzeichen (/). Dieser Separator teilt einen Wert. Wenn Sie ein Skript alle zwölf Stunden ausführen möchten, schreiben Sie */12 in das Stunden-Feld.
- Letzte (L) . Benutzer können diesen Operator in den Feldern Tag des Monats und Tag der Woche verwenden. Zum Beispiel bedeutet das Schreiben von 3L im Feld Tag der Woche, dass es der letzte Mittwoch des Monats ist.
- Wochentag (W). Ein Operator, der den nächsten Wochentag (Mo-Fr) von einer gegebenen Zeit bestimmt. Zum Beispiel, wenn der 1. eines Monats ein Samstag ist, führt das Schreiben von 1W im Tag-des-Monats-Feld den Befehl am Montag, den 3. aus.
- Rautenzeichen (#). Ein Operator für das Feld Tag der Woche, der einen bestimmten Tag des Monats bestimmt, indem er eine Zahl zwischen 1 und 5 verwendet. Zum Beispiel bedeutet 1#2 der zweite Montag des Monats.
- Fragezeichen (?). Dieser Operator gibt keinen spezifischen Wert für die Tag-des-Monats und Tag-der-Woche Felder ein. Er wird normalerweise durch die Startzeit des Cron-Daemons ersetzt.
Profi-Tipp
In Vixie Cron können Sie Trennzeichen mit Bereichen kombinieren, um Schrittwerte anzugeben, wie zum Beispiel 1-2/12.
Wenn Sie sich unsicher sind, die Cron-Syntax manuell zu schreiben, verwenden Sie kostenlose Tools wie Crontab Generator oder Crontab.guru, um die genauen Zahlen für die Zeit und das Datum Ihres Befehls zu generieren.
Cron Syntax Beispiele
Um Ihnen zu helfen, die Cron-Syntax besser zu verstehen, finden Sie hier eine Liste von Beispielbefehlen zur Systemverwaltung mit Cron-Jobs:
Beispiel | Erklärung |
0 0 * * 0 /root/backup.sh | Führt jeden Sonntag um Mitternacht ein Backup durch. |
0 * * * 1 /root/clearcache.sh | Leert jeden Montag stündlich den Cache. |
0 6,18 * * * /root/backup.sh | Sichert die Daten zweimal täglich um 6 Uhr morgens und 18 Uhr abends. |
*/10 * * * * /scripts/monitor.sh | Führt alle 10 Minuten eine Überwachung durch. |
*/15 * * * * /root/backup.sh | Führt alle 15 Minuten ein Backup durch. |
* * 20 7 * /root/backup.sh | Führt am 20. Juli jede Minute ein Backup durch. |
0 0 * * 2 * /root/backup.sh | Führt jeden Dienstag um Mitternacht ein Backup durch. |
* * * 1,2,5 * /scripts/monitor.sh | Führt im Januar, Februar und Mai jede Minute eine Überwachung durch. |
10-59/10 5 * * * /root/clearcache.sh | Leert den Cache alle 10 Minuten um 5 Uhr morgens, beginnend ab 5:10 Uhr. |
0 8 1 */3 * /home/user/script.sh | Lässt die Aufgabe vierteljährlich am ersten Tag des Monats um 8 Uhr morgens laufen. |
0 * * * * /root/backup.sh | Erstellt jede Stunde ein Backup. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh | Fügt mehrere Aufgaben in einem einzigen Cronjob ein. Dies ist nützlich, um mehrere Aufgaben gleichzeitig auszuführen. |
@reboot /root/clearcache.sh | Leert den Server-Cache jedes Mal, wenn Sie das System einschalten. |
0 8 1-7 * 1 /scripts/script.sh | Führt ein Skript am ersten Montag jeden Monats um 8 Uhr morgens aus. |
5 4 * * 0 /root/backup.sh | Erstellt jeden Sonntagmorgen um 4:05 Uhr ein Backup. |
15 9 1,20 * * /scripts/monitor.sh | Führt eine Überwachung um 21:15 Uhr am ersten und zwanzigsten jeden Monats durch. |
@hourly /scripts/monitor.sh | Führt jede Stunde eine Überwachung durch. |
0 0 1,15 * 3 /scripts/script.sh | Führt jeden Mittwoch um Mitternacht zwischen dem 1. und 15. jeden Monats ein Skript aus. |
15 14 1 * * /root/clearcache.sh | Löscht den Cache am ersten Tag jeden Monats um 14:15 Uhr. |
15 6 1 1 * /root/backup.sh | Führt jedes Jahr am 1. Januar um 6:15 Uhr morgens ein Backup durch. |
0 0 * * * /scripts/monitor.sh | Führt das Überwachungsskript einmal täglich um Mitternacht aus. |
0 0 15 * * /root/clearcache.sh | Löscht den Cache um Mitternacht am 15. jeden Monats. |
Spezielle Cronjob-Zeichenfolgen
Spezielle Zeichenfolgen werden verwendet, um Cron-Jobs schnell zu bestimmten Zeitintervallen zu planen, ohne die genauen Werte anzugeben. Um sie zu verwenden, schreiben Sie einen einfachen Satz, der mit einem @ beginnt. Hier sind einige nützliche spezielle Zeichenfolgen, die in Befehlen verwendet werden können:
- @hourly. Der Job wird einmal pro Stunde ausgeführt.
- @daily or @midnight. Diese Zeichenfolgen werden die Aufgabe jeden Tag um Mitternacht ausführen.
- @weekly. Eine Zeichenfolge zur Planung von Aufgaben einmal pro Woche um Mitternacht am Sonntag.
- @monthly. Diese spezielle Zeichenfolge führt einmal am ersten Tag jeden Monats einen Befehl aus.
- @yearly. Verwenden Sie diese Zeichenfolge, um eine Aufgabe einmal im Jahr um Mitternacht am 1. Januar auszuführen.
- @reboot. Diese Zeichenfolge führt den Cron-Job einmal während eines Systemstarts aus.
Cron-Berechtigungen
Stellen Sie sicher, dass Sie die richtigen Berechtigungen für die Cron-Dateien Ihres Systems festlegen, um die Ausführung der Aufgaben zu ermöglichen. Sie können zwei Dateien erstellen oder bearbeiten, um die Berechtigungen festzulegen – cron.allow und cron.deny.
Wenn /etc/cron.allow existiert, sollte es einen Benutzernamen enthalten, der berechtigt ist, die Cron-Job-Automatisierung auszuführen. Wenn jedoch Ihr System /etc/cron.deny enthält, das einen Benutzernamen enthält, kann dieses Konto Cron nicht verwenden.
Wie man Cronjobs ausführt
In diesem Abschnitt zeigen wir Ihnen, wie Sie Cron-Jobs planen, indem Sie Befehle in ein Shell-Programm auf einem Linux-basierten System eingeben, wie zum Beispiel beim VPS-Hosting von Hostinger.
Verbinden Sie sich mit Ihrem VPS über das Terminal oder einen SSH-Client wie PuTTY. Alternativ können Hostinger VPS-Benutzer die Befehlszeilenschnittstelle (CLI) in ihrem Browser über hPanel aufrufen.
Profi-Tipp
Zusätzlich zu VPS unterstützen die Managed Hosting-Pläne von Hostinger auch Cron-Jobs. Zum Beispiel lässt Sie der Business-Webhosting-Plan unbegrenzt viele Jobs planen.
Nach dem Zugriff auf hPanel navigieren Sie zu dem VPS-Menü in der oberen Leiste und wählen Sie Ihren Tarif aus. Dann klicken Sie auf Browser-Terminal.
Cron ist üblicherweise standardmäßig in allen Linux-Distributionen vorinstalliert. Andernfalls führen Sie den Installationsbefehl gemäß Ihrem Paketmanager aus. Hier ist der Befehl für Ubuntu mit apt:
sudo apt install cron
Bevor Sie mit den grundlegenden Cron-Job-Operationen fortfahren, müssen Sie die Konfigurationsdateien verstehen – die System-Crontab und die User-Crontab.
System-Crontab wird verwendet, um systemweite wesentliche Aufgaben zu planen, die nur von Personen mit Root-Rechten bearbeitet werden können. User-Crontab hingegen verwenden Sie, um Aufgaben zu erstellen und zu bearbeiten, die nur auf Benutzerebene gelten.
Um System-Crontab zu bearbeiten, stellen Sie sicher, dass der aktuelle Benutzer Root-Rechte hat. Lesen Sie weiter, um mehrere grundlegende Operationen zu erfahren, die Cron ausführen kann.
Einen Cron Job verwenden, um eine Crontab-Datei zu erstellen
Geben Sie den folgenden Schnipsel in die Befehlszeile ein, um eine vorhandene Crontab-Datei zu bearbeiten. Wenn Ihr System dies nicht hat, wird der Befehl automatisch einen neuen erstellen.
crontab -e
Wenn Sie zum ersten Mal crontab -e eingeben, werden Sie aufgefordert, einen Texteditor auszuwählen, mit dem Sie die Datei bearbeiten möchten, wie zum Beispiel nano oder vi. Im Texteditor können Sie andere Befehle hinzufügen oder vorhandene bearbeiten.
Einen Cron Job zur Anzeige einer Liste aktiver geplanter Aufgaben verwenden
Um eine Liste der aktiven, geplanten Aufgaben in Ihrem System zu sehen, geben Sie den folgenden Befehl ein:
crontab -l
Wenn Ihr System mehrere Benutzer hat, können Sie deren Crontab-Dateilisten einsehen, indem Sie den untenstehenden Befehl als Superuser eingeben:
crontab -u username -l
Cron Jobs verwenden, um sich selbst Root-Zugriff zu gewähren
Aufgrund von Benutzerberechtigungseinschränkungen können einige Befehle nur mit Root-Berechtigungen ausgeführt werden. Um sich Root-Rechte zu geben, fügen Sie sudo su am Anfang des Befehls hinzu.
Zum Beispiel benötigen Sie sudo su , um einen Crontab-Befehl auszuführen, der die geplanten Aufgaben anderer Benutzer bearbeitet:
sudo su crontab -u username -e
Darüber hinaus können Sie Cron-Jobs zum Verzeichnis etc/cron.d hinzufügen, um automatische Installations- und Aktualisierungsskripte zu speichern. Um sie zu diesem Verzeichnis hinzuzufügen, müssen Sie Root-Zugriff haben und den run-parts-Namenskonventionen entsprechen.
Alternativ kann ein Root-Benutzer seine Cron-Job-Skripte in die folgenden Verzeichnisse verschieben, um ihre Ausführung zu planen:
- /etc/cron.hourly/. Führt das Skript einmal pro Stunde aus.
- /etc/cron.daily/. Führt es einmal am Tag aus.
- /etc/cron.weekly/. Führt es einmal pro Woche aus.
- /etc/cron.monthly/. Führt es einmal im Monat aus.
Einen Cron Job verwenden, um geplante Aufgaben zu löschen
Um alle geplanten Aufgaben in den Crontab-Einträgen zu löschen und von vorne zu beginnen, geben Sie den folgenden Befehl ein:
crontab -r
Alternativ verwenden Sie den Befehl crontab -i . Er ist ähnlich wie der vorherige, außer dass Sie eine Bestätigungsoption erhalten, bevor Sie den Crontab entfernen:
crontab -i
Fazit
Cron Daemon ist ein Dienst in einem Unix-basierten System, der es Ihnen ermöglicht, Automatisierungsskripte für die Planung von Aufgaben zu erstellen. Cron-Jobs hingegen sind die Aufgaben, die mit diesem Tool automatisiert werden, wie zum Beispiel das Aktualisieren, Installieren oder Überwachen eines Systems.
Um Aufgaben zu automatisieren, schreiben Sie den Crontab-Befehl in die Cron-Datei Ihres Systems. Der Befehl enthält das Skript zur Ausführung und fünf Sternchen, die sich auf die Ausführungszeit des Cron-Jobs beziehen. Ändern Sie den Wert dieser Sternchen und verwenden Sie die Operatoren, um die Zeit zu ändern.
Um einen Cron-Job auszuführen, verbinden Sie sich mit Ihrem Linux-Betriebssystem unter Verwendung von Terminal, einem SSH-Client oder einer anderen CLI-Anwendung mit Root-Berechtigung. Erstellen Sie dann eine Crontab-Datei und fügen Sie das Skript mit einem Texteditor wie Nano hinzu.
Cron Job FAQ
In diesem Abschnitt beantworten wir mehrere häufig gestellte Fragen zu Cronjobs, um Ihnen zu helfen, das Tool besser zu verstehen.
Was macht ein Cron-Job?
Cron-Jobs sind Linux-Befehle zur Automatisierung wiederkehrender Aufgaben auf Ihrem Server. Sie ermöglichen Ihnen, Aufgaben für Ihr System wie Aktualisieren, Installieren oder Überwachen mit einem einzigen Befehl zu planen.
Was ist der Gebrauch von * * * * * in Cron?
* * * * * ist eine Cron-Zeitplan-Ausdruckswildcard, was bedeutet, dass Ihr Cronjob jede Minute ausgeführt werden sollte, unabhängig von der Stunde, dem Tag, dem Datum oder dem Monat.
Wie führe ich einen Cronjob aus?
Melden Sie sich als Root-Benutzer über SSH mit PuTTY, Terminal oder dem im Browser integrierten Terminal von Hostinger an Ihrem Server an. Erstellen Sie dann eine Datei mit dem Befehl crontab -e.
Wählen Sie einen Editor aus, um die Datei anzusehen und fügen Sie Ihr Cron-Job-Skript in die leere Crontab-Datei ein. Speichern Sie die Datei, sobald Sie fertig sind, um die Automatisierung zu ermöglichen.