Cron verstehen und verwenden: Eine umfassende Anleitung zum Planen von Jobs
cron, kurz für Befehl online ausführenist ein leistungsstarker zeitbasierter Jobplaner in Unix-ähnlichen Betriebssystemen. Der Begriff cron ist ein Wortspiel kronos or chronos, das in der griechischen Mythologie die Zeit darstellt. Der Name cron für den zeitbasierten Job-Scheduler spiegelt seine Funktion wider, Aufgaben zu bestimmten Zeiten oder Intervallen zu planen und auszuführen, und ist damit eine passende Anspielung auf das Zeitkonzept in der Mythologie.
Mit Cron können Sie sich wiederholende Aufgaben automatisieren, Skripte in bestimmten Intervallen ausführen und die Systemeffizienz aufrechterhalten. Dieser umfassende Leitfaden führt Sie durch alles, was Sie über Cron wissen müssen, von der Installation bis zur Verwendung, dem Schlüsselvokabular und echten Codebeispielen.
Inhaltsverzeichnis
- Was ist Cron?
- Cron installieren
- Grundlegende Konzepte und Terminologie
- Cron-Syntax
- Beispiele und Anwendungsfälle
- Häufige Fallstricke und Best Practices
- Zusätzliche Cron-Ressourcen
Was ist Cron?
Cron ist ein Daemon (Hintergrundprozess), der auf Unix-basierten Systemen, einschließlich Linux und macOS, läuft. Sein Hauptzweck besteht darin, geplante Aufgaben automatisch auszuführen. Diese Aufgaben können von einfachen Skripten bis hin zu Systemwartung und Backups reichen.
Cron installieren
In den meisten Unix-ähnlichen Systemen ist cron vorinstalliert. Sie können die Verfügbarkeit überprüfen, indem Sie ein Terminal öffnen und Folgendes eingeben:
crontab -e
Wenn dieser Befehl den Cron-Tabelleneditor öffnet, haben Sie Cron installiert. Wenn nicht, können Sie es mit dem Paketmanager Ihres Systems installieren. Unter Ubuntu können Sie beispielsweise Folgendes verwenden:
sudo apt-get install cron
Cron-Konzepte und Terminologie
Bevor wir uns mit der Cron-Nutzung befassen, wollen wir einige wesentliche Konzepte und Terminologie verstehen:
- crontab: Kurz für Cron Tisch, es handelt sich um eine Datei, die die Liste der geplanten Aufgaben für einen Benutzer enthält.
- Cron-Job: Eine einzelne Aufgabe oder ein einzelner Befehl, dessen Ausführung zu einem bestimmten Zeitpunkt geplant ist.
- Felder: Jeder Cronjob verfügt über fünf Felder, die definieren, wann der Job ausgeführt wird:
- Minute (0-59)
- Stunde (0-23)
- Tag des Monats (1-31)
- Monat (1-12)
- Wochentag (0–7, wobei sowohl 0 als auch 7 den Sonntag darstellen)
Cron-Syntax
Es ist von entscheidender Bedeutung, die Syntax eines Crontab-Eintrags zu verstehen. Es folgt dem Muster:
* * * * * command-to-be-executed
Hier ist eine kommentierte Erklärung, die Sie in Ihren Cron-Job einfügen können:
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
* * * * * /var/www/html/myscript.php
Jedes Sternchen (*) stellt ein Feld im Cron-Ausdruck dar. Um beispielsweise jeden Tag um 3:30 Uhr einen Job zu planen, würden Sie Folgendes verwenden:
30 15 * * * command-to-be-executed
Cron-Beispiele und Anwendungsfälle
Sehen wir uns einige praktische Beispiele an, um die Verwendung von Cron zu veranschaulichen:
- Täglich ein Skript ausführen: Um jeden Tag um Mitternacht ein Skript auszuführen, können Sie Folgendes verwenden:
0 0 * * * /path/to/script.sh
- Stündlich ein Skript ausführen: Für eine stündliche Aufgabe verwenden Sie:
0 * * * * /path/to/script.sh
- Wöchentliches Backup: Um eine wöchentliche Sicherung sonntags um 2 Uhr morgens zu planen, verwenden Sie:
0 2 * * 0 /path/to/backup-script.sh
- Ausführen einer Aufgabe in bestimmten Monaten: So führen Sie einen Job nur im Januar und Juli um 8:30 Uhr aus:
30 8 * 1,7 * /path/to/script.sh
Cron-Fallstricke und Best Practices
- Umgebungsvariablen: Stellen Sie sicher, dass Ihre Cron-Jobs die erforderlichen Umgebungsvariablen einrichten, da Cron-Jobs die Umgebungsvariablen Ihrer Shell nicht erben.
- Berechtigungen: Stellen Sie sicher, dass Sie die Berechtigungen für Ihre Skriptdatei als ausführbar festlegen. Jedes Mal, wenn ich mein Skript erneut speicherte, stellte ich fest, dass meine Berechtigungen erneut festgelegt werden mussten!
- Pfadvariablen: Geben Sie den vollständigen Pfad zu ausführbaren Dateien und Skripten in Ihren Cron-Jobs an, um Probleme mit relativen Pfaden zu vermeiden.
- Testen: Testen Sie sie in einer sicheren Umgebung, bevor Sie kritische Cron-Jobs einrichten, um sicherzustellen, dass sie wie erwartet funktionieren.
- Protokollierung: Leiten Sie die Ausgabe Ihrer Cron-Jobs in eine Protokolldatei um, um deren Ausführung und mögliche Fehler zu verfolgen.
0 0 * * * /path/to/script.sh >> /path/to/cron.log 2>&1
Dieser Cron-Job führt ein Skript aus /path/to/script.sh
jeden Tag um Mitternacht, und die vom Skript generierte Ausgabe (sowohl stdout als auch stderr) wird an die Protokolldatei angehängt
/path/to/cron.log
. Dies ist eine gängige Praxis, um die Ausgabe von Cron-Jobs zu Überwachungs- und Fehlerbehebungszwecken zu erfassen und zu protokollieren. Lassen Sie uns diese spezielle Cron-Job-Syntax aufschlüsseln: - *0 0 * * *: Dieser Teil definiert den Zeitplan, wann der Cron-Job ausgeführt werden soll. In diesem Fall ist die Ausführung jeden Tag um Mitternacht (0 Minuten nach 0 Stunden) geplant.
- /path/to/script.sh: Dies ist der Befehl oder das Skript, das ausgeführt werden soll, wenn der Cron-Job ausgeführt wird. Dieses Beispiel zeigt ein Skript, das sich unter befindet
/path/to/script.sh
. - >> /path/to/cron.log: Dieser Teil leitet die Standardausgabe (stdout) des Cron-Jobs in eine Protokolldatei mit dem Namen um
cron.log
befindet sich/path/to/
dem „Vermischten Geschmack“. Seine>>
Der Operator hängt die Ausgabe an die Protokolldatei an. Wenn die Datei nicht vorhanden ist, wird sie erstellt. Wenn sie bereits vorhanden ist, wird die Ausgabe am Ende der Datei hinzugefügt. - 2> & 1: Dies wird zum Umleiten von Standardausgabe (stdout) und Standardfehler (stderr) in dieselbe Protokolldatei verwendet. Der
2
stellt stderr dar, und die1
stellt stdout dar. Also,2>&1
bedeutet, dass sowohl stdout als auch stderr in dieselbe zuvor angegebene Protokolldatei umgeleitet werden.
Cron ist ein wertvolles Tool zur Automatisierung von Aufgaben auf Unix-basierten Systemen. Mit seinen flexiblen Planungsoptionen kann es die Systemverwaltung vereinfachen und die Effizienz steigern. Wenn Sie die Syntax verstehen und Best Practices befolgen, können Sie die Leistungsfähigkeit von Cron nutzen, um Ihre Routineaufgaben effektiv zu automatisieren.
Zusätzliche Cron-Ressourcen
- Unix-Daemon - Dean Wilson