
Cron ist ein Scheduling-Daemon, der Aufgaben in bestimmten Intervallen ausführt. Diese Aufgaben werden als Cron-Jobs bezeichnet und dienen hauptsächlich zur Automatisierung der Systemwartung oder -verwaltung.
Sie können beispielsweise einen Cron-Job einrichten, um sich wiederholende Aufgaben wie das Sichern von Datenbanken oder Daten, das Aktualisieren des Systems mit den neuesten Sicherheitspatches, das Überprüfen der Speicherplatznutzung, das Versenden von E-Mails usw. zu automatisieren.
Die Cron-Jobs können so geplant werden, dass sie nach Minuten, Stunden, Tag des Monats, Monat, Wochentag oder einer beliebigen Kombination davon ausgeführt werden.
Was ist Crontab-Datei #
Crontab (Cron-Tabelle) ist eine Textdatei, die den Zeitplan von Cron-Jobs angibt. Es gibt zwei Arten von Crontab-Dateien. Die systemweiten Crontab-Dateien und individuelle Benutzer-Crontab-Dateien.
Die Crontab-Dateien der Benutzer werden nach dem Namen des Benutzers benannt, und ihr Speicherort variiert je nach Betriebssystem. In Red Hat-basierten Distributionen wie CentOS werden Crontab-Dateien im Verzeichnis /var/spool/cron
gespeichert Verzeichnis, während auf Debian und Ubuntu Dateien in /var/spool/cron/crontabs
gespeichert werden Verzeichnis.
Obwohl Sie die Benutzer-crontab-Dateien manuell bearbeiten können, wird empfohlen, die crontab
zu verwenden Befehl.
Die /etc/crontab
Datei und die Skripte in /etc/cron.d
Verzeichnis sind systemweite Crontab-Dateien, die nur von Systemadministratoren bearbeitet werden können.
In den meisten Linux-Distributionen können Sie Skripte auch in /etc/cron.{hourly,daily,weekly,monthly}
einfügen Verzeichnisse und die Skripte werden jede hour/day/week/month
ausgeführt .
Crontab-Syntax und -Operatoren #
Jede Zeile in der Crontab-Datei des Benutzers enthält sechs Felder, die durch ein Leerzeichen getrennt sind, gefolgt von dem auszuführenden Befehl.
* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
Die ersten fünf Felder können einen oder mehrere Werte enthalten, die durch ein Komma getrennt sind, oder einen Wertebereich, der durch einen Bindestrich getrennt ist.
*
- Der Sternchen-Operator bedeutet beliebiger Wert oder immer. Wenn das Sternsymbol im Feld „Stunde“ angezeigt wird, bedeutet dies, dass die Aufgabe stündlich ausgeführt wird.,
- Mit dem Kommaoperator können Sie eine Liste von Werten zur Wiederholung angeben. Zum Beispiel, wenn Sie1,3,5
haben im Feld Stunde wird die Aufgabe um 1 Uhr morgens, 3 Uhr morgens und 5 Uhr morgens ausgeführt.-
- Mit dem Bindestrichoperator können Sie einen Wertebereich angeben. Wenn Sie1-5
haben im Feld Wochentag wird die Aufgabe an jedem Wochentag (von Montag bis Freitag) ausgeführt./
- Mit dem Schrägstrichoperator können Sie Werte angeben, die in einem bestimmten Intervall zwischen ihnen wiederholt werden. Zum Beispiel, wenn Sie*/4
haben im Feld „Stunde“ bedeutet dies, dass die Aktion alle vier Stunden ausgeführt wird. Dies entspricht der Angabe von0,4,8,12,16,20
. Statt Stern vor dem Schrägstrich-Operator können Sie auch einen Wertebereich verwenden,1-30/10
bedeutet dasselbe wie1,11,21
.
Systemweite Crontab-Dateien #
Die Syntax von systemweiten Crontab-Dateien unterscheidet sich geringfügig von Benutzer-Crontabs. Es enthält ein zusätzliches obligatorisches Benutzerfeld, das angibt, welcher Benutzer den Cron-Job ausführt.
* * * * * <username> command(s)
Vordefinierte Makros #
Es gibt mehrere spezielle Cron-Zeitplan-Makros, die verwendet werden, um gemeinsame Intervalle anzugeben. Sie können diese Kürzel anstelle der fünfspaltigen Datumsangabe verwenden.
@yearly
(oder@annually
) - Führen Sie die angegebene Aufgabe einmal im Jahr um Mitternacht (00:00 Uhr) des 1. Januar aus. Entspricht0 0 1 1 *
.@monthly
- Führen Sie die angegebene Aufgabe einmal im Monat um Mitternacht am ersten Tag des Monats aus. Entspricht0 0 1 * *
.@weekly
- Führen Sie die angegebene Aufgabe einmal pro Woche am Sonntag um Mitternacht aus. Entspricht0 0 * * 0
.@daily
- Führen Sie die angegebene Aufgabe einmal täglich um Mitternacht aus. Entspricht0 0 * * *
.@hourly
- Führen Sie die angegebene Aufgabe einmal pro Stunde zu Beginn der Stunde aus. Äquivalent zu0 * * * *
.@reboot
- Führen Sie die angegebene Aufgabe beim Systemstart (Boot-Zeit) aus.
Linux-Crontab-Befehl #
Die crontab
Mit dem Befehl können Sie eine crontab-Datei zum Bearbeiten installieren, anzeigen oder öffnen:
crontab -e
- Crontab-Datei bearbeiten oder eine erstellen, falls sie noch nicht existiert.crontab -l
- Inhalt der Crontab-Datei anzeigen.crontab -r
- Entfernen Sie Ihre aktuelle crontab-Datei.crontab -i
- Entfernen Sie Ihre aktuelle Crontab-Datei mit einer Aufforderung vor dem Entfernen.crontab -u <username>
- Crontab-Datei anderer Benutzer bearbeiten. Diese Option erfordert Systemadministratorrechte.
Der crontab-Befehl öffnet die crontab-Datei mit dem Editor, der durch VISUAL
angegeben wird oder EDITOR
Umgebungsvariablen.

Crontab-Variablen #
Der Cron-Daemon setzt automatisch mehrere Umgebungsvariablen.
- Der Standardpfad ist auf
PATH=/usr/bin:/bin
eingestellt . Wenn der Befehl, den Sie ausführen, nicht im angegebenen Cron-Pfad vorhanden ist, können Sie entweder den absoluten Pfad zum Befehl verwenden oder den Cron$PATH
ändern Variable. Sie können:$PATH
nicht implizit anhängen wie Sie es mit einem normalen Skript tun würden. - Die Standard-Shell ist auf
/bin/sh
eingestellt . Um die andere Shell zu wechseln, verwenden SieSHELL
variabel. - Cron ruft den Befehl aus dem Home-Verzeichnis des Benutzers auf. Die
HOME
Variable kann in der crontab gesetzt werden. - Die E-Mail-Benachrichtigung wird an den Eigentümer der Crontab gesendet. Um das Standardverhalten zu überschreiben, können Sie den
MAILTO
verwenden Umgebungsvariable mit einer Liste (durch Kommas getrennt) aller E-Mail-Adressen, die Sie per E-Mail benachrichtigen möchten. WennMAILTO
ist definiert, aber leer (MAILTO=""
), wird keine Mail gesendet.
Crontab-Einschränkungen #
Die /etc/cron.deny
und /etc/cron.allow
files können Sie steuern, welche Benutzer Zugriff auf crontab
haben Befehl. Die Dateien bestehen aus einer Liste von Benutzernamen, ein Benutzername pro Zeile.
Standardmäßig nur die /etc/cron.deny
Die Datei existiert und ist leer, was bedeutet, dass alle Benutzer den Befehl crontab verwenden können. Wenn Sie einem bestimmten Benutzer den Zugriff auf die crontab-Befehle verweigern möchten, fügen Sie den Benutzernamen zu dieser Datei hinzu.
Wenn die /etc/cron.allow
Datei existiert, nur die Benutzer, die in dieser Datei aufgeführt sind, können die crontab
verwenden Befehl.
Wenn keine der Dateien vorhanden ist, können nur Benutzer mit Administratorrechten crontab
verwenden Befehl.
Beispiele für Cron-Jobs #
Nachfolgend finden Sie einige Cron-Job-Beispiele, die zeigen, wie eine Aufgabe so geplant wird, dass sie in verschiedenen Zeiträumen ausgeführt wird.
-
Führen Sie von Montag bis Freitag jeden Tag um 15:00 Uhr einen Befehl aus:
0 15 * * 1-5 command
-
Führen Sie alle 5 Minuten ein Skript aus und leiten Sie die Standardausgabe auf
dev null
um , wird nur der Standardfehler an die angegebene E-Mail-Adresse gesendet:[email protected] */5 * * * * /path/to/script.sh > /dev/null
-
Führen Sie jeden Montag um 15:00 Uhr zwei Befehle aus (verwenden Sie den Operator
&&
zwischen den Befehlen):0 15 * * Mon command1 && command2
-
Führen Sie alle 2 Minuten ein PHP-Skript aus und schreiben Sie die Ausgabe in eine Datei:
*/2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
-
Führen Sie jeden Tag, jede Stunde, zur vollen Stunde von 8:00 bis 16:00 Uhr ein Skript aus:
00 08-16 * * * /path/to/script.sh
-
Führen Sie am ersten Montag jedes Monats um 7 Uhr morgens ein Skript aus.
0 7 1-7 * 1 /path/to/script.sh
-
Führen Sie das a-Skript am 1. und 15. jeden Monats um 21:15 Uhr aus:
15 9 1,15 * * /path/to/script.sh
-
Legen Sie ein benutzerdefiniertes
HOME
fest ,PATH
,SHELL
undMAILTO
Variablen und führen jede Minute einen Befehl aus.HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command
Schlussfolgerung #
Cron ist ein Daemon, mit dem Sie Aufgaben zu einem bestimmten Datum und zu einer bestimmten Uhrzeit planen können.
Fühlen Sie sich frei, einen Kommentar zu hinterlassen, wenn Sie Fragen haben.