Cron ist ein zeitbasierter Jobplanungsdienst, der in Unix-ähnlichen Betriebssystemen zu finden ist. Benutzer planen Jobs (Befehle oder Skripts) so, dass sie regelmäßig zu festgelegten Zeiten, Daten oder Intervallen ausgeführt werden.
Der Ursprung und die frühe Geschichte von Cron
Die erste Implementierung von cron stammt aus der Unix-Version 7. Der Begriff „cron“ kommt vom griechischen Wort für Zeit „chronos“. Diese 1979 veröffentlichte Unix-Version verfügte über ein einfaches Cron-Programm, das Aufgaben in bestimmten Intervallen ausführte. Die Funktionalität von Cron wurde später im Jahr 1987 von Paul Vixie erweitert. Diese als Vixie Cron bekannte Version ist heute die am häufigsten installierte Version und wird im Allgemeinen mit „Cron“ bezeichnet.
Erweiterung des Cron-Konzepts
Cron ermöglicht es Benutzern, die Systemwartung oder -verwaltung zu automatisieren – obwohl es aufgrund seiner universellen Natur für Dinge wie das Herunterladen von Dateien aus dem Internet und das Herunterladen von E-Mails in regelmäßigen Abständen nützlich ist. Eine Cron-Umgebung ist wie eine Sandbox, in der Cron-Jobs aus der regulären Shell-Umgebung ausgeführt werden.
Jeder Benutzer kann seine eigene Crontab haben, und obwohl es sich dabei um Dateien in /var/spool/ handelt, sind sie nicht für die direkte Bearbeitung gedacht. Die Syntax von Cron-Ausdrücken kann in zwei Haupttypen von Syntax unterteilt werden: Unix-Cron-Syntax und eine komplexere Syntax, die als Cron-Ausdruckssyntax oder Quarz-Cron-Syntax bekannt ist.
Die interne Struktur von Cron und wie es funktioniert
Cron basiert auf einer einfachen, aber leistungsstarken Konfigurationsdatei, die als „crontab“-Datei bekannt ist. Diese Datei enthält eine Zeile für jede auszuführende Aufgabe, bestehend aus fünf Zeit- und Datumsfeldern, gefolgt von einem Befehl, der zu bestimmten Zeiten ausgeführt werden soll.
Die fünf Felder stellen Folgendes dar:
- Minuten nach der vollen Stunde (0 – 59)
- Stunden pro Tag (0 – 23)
- Tage im Monat (1 – 31)
- Monate im Jahr (1 – 12)
- Wochentage (0 – 7, wobei 0 und 7 Sonntag sind)
Das Befehlsfeld enthält die Aufgabe, die zu den in den ersten fünf Feldern angegebenen Zeiten ausgeführt werden soll.
Hauptmerkmale von Cron
Zu den Hauptfunktionen von Cron gehören:
- Dadurch können Aufgaben in regelmäßigen Abständen automatisch im Hintergrund ausgeführt werden.
- Es bietet eine flexible Plattform zum Planen von Aufgaben (Skripten oder Befehlen) mit verschiedenen Zeiteinheiten.
- Jeder Benutzer kann seine eigene Crontab-Datei haben.
- Cron-Jobs können für die Ausführung nach Minute, Stunde, Wochentag, Tag des Monats und Monat des Jahres geplant werden.
- Cron bietet eine einfache und effektive Möglichkeit, verschiedene Systemaufgaben zu automatisieren.
Arten von Cron
Cron-Jobs können im Allgemeinen wie folgt kategorisiert werden:
Typ | Beschreibung |
---|---|
Neustart | Wird beim Start einmal ausgeführt. |
Anacron | Wird in in Tagen angegebenen Intervallen ausgeführt. |
System-Cron | Diese werden in /etc/crontab und im Verzeichnis /etc/cron.d/ gespeichert und sollen systemweit gültig sein. |
Benutzer-Cron | Jeder Benutzer kann seine eigenen haben und diese werden in /var/spool/cron/crontabs/ gespeichert. |
Cron-Nutzung, Probleme und ihre Lösungen
Cron eignet sich zur Automatisierung von Aufgaben, kann jedoch bei unsachgemäßer Verwendung zu Problemen führen. Beispielsweise kann ein falsch konfigurierter Cron-Job zu einer hohen CPU-Auslastung führen. Außerdem sendet Cron die Ausgabe seiner Jobs, sofern vorhanden, nur per E-Mail an den Benutzer, als den er die Jobs ausführt. Dies kann zu übersehenen Fehlern führen, wenn es nicht regelmäßig überprüft wird.
Zu den gängigen Lösungen für diese Probleme gehören:
- Überprüfen Sie regelmäßig, ob eine hohe CPU-Auslastung vorliegt, und konfigurieren Sie unnötige Jobs neu oder stoppen Sie sie.
- Stellen Sie sicher, dass alle Befehle und Skripte ordnungsgemäß ausgeführt werden, bevor Sie sie als Cron-Jobs festlegen.
- Leiten Sie die Ausgabe in eine Protokolldatei um oder richten Sie einen Mailserver ein, um Cron-Jobs effektiver zu überwachen.
Vergleiche mit ähnlichen Tools
Es gibt andere Aufgabenplaner, die Cron ähneln, wie zum Beispiel Anacron und Systemd-Timer. Die Hauptunterschiede zwischen diesen können wie folgt zusammengefasst werden:
Werkzeug | Beschreibung |
---|---|
Cron | Geeignet für Aufgaben, die zu bestimmten Tageszeiten ausgeführt werden sollen. Verpasste Jobs werden nicht ausgeführt. |
Anacron | Geeignet für Aufgaben, die einmal täglich/wöchentlich/monatlich ausgeführt werden sollen. Verpasste Aufträge werden ausgeführt, wenn die Maschine wieder online ist. |
Systemd | Geeignet für komplexere Szenarien, da es mehr Optionen bietet und sich gut in moderne Linux-Distributionen integrieren lässt. |
Zukunftsperspektiven und verwandte Technologien
Während sich Unix-basierte Systeme weiterentwickeln, entwickelt sich auch Cron weiter. Trotz des Aufkommens fortschrittlicherer Aufgabenplaner wie systemd sorgen die Einfachheit und Leistungsfähigkeit von Cron dafür, dass es auch heute noch häufig verwendet wird.
Der jüngste Trend zu Containeranwendungen und Microservices-Architekturen hat auch neue Möglichkeiten für die Nutzung von Cron hervorgebracht. Beispielsweise verfügt Kubernetes, eine beliebte Container-Orchestrierungsplattform, über eine Funktion namens CronJobs, die Cron in Unix-basierten Systemen ähnelt.
Proxyserver und Cron
Proxyserver können in Kombination mit Cron effektiv zur Automatisierung bestimmter Aufgaben eingesetzt werden. Wenn Sie beispielsweise über ein Skript verfügen, das regelmäßig über einen Proxyserver auf eine Website oder API zugreifen muss, können Sie einen Cron-Job einrichten, um dieses Skript in bestimmten Intervallen auszuführen.
Cron könnte auch verwendet werden, um Proxys in bestimmten Intervallen zu rotieren, wodurch die Wahrscheinlichkeit verringert wird, dass ein einzelner Proxy blockiert wird. Beispielsweise können die Proxy-Dienste von OneProxy mit Cron für Aufgaben wie Daten-Scraping, Automatisierung von Social-Media-Aufgaben und mehr automatisiert werden.
verwandte Links
Weitere Informationen zu Cron finden Sie in den folgenden Ressourcen: