Android

Cron jobs mit crontab einplanen

Linux: Aufgabenplanung mit Crontab

Linux: Aufgabenplanung mit Crontab

Inhaltsverzeichnis:

Anonim

Cron ist ein Scheduling-Daemon, der Aufgaben in festgelegten Intervallen ausführt. Diese Aufgaben werden als Cron-Jobs bezeichnet und hauptsächlich zur Automatisierung der Systemwartung oder -verwaltung verwendet.

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 Senden von E-Mails usw. zu automatisieren. Einige Anwendungen, wie z. B. Drupal oder Magento, erfordern Cron-Jobs, um bestimmte Aufgaben auszuführen.

Die Cron-Jobs können so geplant werden, dass sie nach Minute, Stunde, 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 für Cron-Jobs angibt. Es gibt zwei Arten von Crontab-Dateien. Die systemweiten crontab-Dateien und die einzelnen Benutzer-crontab-Dateien.

Benutzer-Crontab-Dateien werden nach dem Namen des Benutzers gespeichert, und ihr Speicherort variiert je nach Betriebssystem. In Red Hat-basierten Systemen wie CentOS werden crontab-Dateien im Verzeichnis /var/spool/cron/crontabs gespeichert, während Debian- und Ubuntu-Dateien im Verzeichnis /var/spool/cron/crontabs .

Sie können die Benutzer-Crontab-Dateien zwar manuell bearbeiten, es wird jedoch empfohlen, den Befehl crontab zu verwenden.

/etc/crontab und die Dateien im Verzeichnis /etc/cron.d sind systemweite crontab-Dateien, die nur von den Systemadministratoren bearbeitet werden können.

In den meisten Linux-Distributionen können Sie Skripte auch in die /etc/cron.{hourly, daily, weekly, monthly} Die Skripte werden jede hour/day/week/month jeden hour/day/week/month jede hour/day/week/month jeden hour/day/week/month .

Crontab-Syntax und Operatoren

Jede Zeile in der Benutzer-Crontab-Datei enthält sechs Felder, die durch ein Leerzeichen und den auszuführenden Befehl voneinander getrennt sind.

* * * * * 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 oder einen durch einen Bindestrich getrennten Wertebereich voneinander getrennt sind.

  • * -Der Sternchen-Operator bedeutet einen beliebigen Wert oder immer. Wenn Sie das Sternsymbol im Feld Stunde haben, bedeutet dies, dass die Aufgabe jede Stunde ausgeführt wird. , Komma-Operator können Sie eine Liste von Werten für die Wiederholung angeben. Wenn Sie zum Beispiel 1, 3, 5 im Feld Stunde haben, wird die Aufgabe um 1:00 Uhr, 3:00 Uhr und 5:00 Uhr ausgeführt. - - Mit dem Bindestrich-Operator können Sie einen Wertebereich angeben. Wenn Sie 1-5 im Feld Wochentag haben, wird die Aufgabe an jedem Wochentag (von Montag bis Freitag) ausgeführt. / - Mit dem Schrägstrich können Sie Werte angeben, die in einem bestimmten Intervall zwischen ihnen wiederholt werden. Wenn Sie zum Beispiel */4 im Feld Stunde haben, bedeutet dies, dass die Aktion alle vier Stunden ausgeführt wird. Es entspricht der Angabe von 0, 4, 8, 12, 16, 20 . Anstelle eines Sternchens vor dem Schrägstrich können Sie auch einen Wertebereich verwenden. 1-30/10 bedeutet dasselbe wie 1, 11, 21 .

Systemweite Crontab-Dateien

Die Syntax von systemweiten Crontab-Dateien unterscheidet sich geringfügig von der von Benutzer-Crontabs. Es enthält ein zusätzliches obligatorisches Benutzerfeld, das angibt, welcher Benutzer den Cron-Job ausführen wird.

* * * * * command(s) * * * * * command(s)

Vordefinierte Makros

Es gibt mehrere spezielle Cron-Zeitplan-Makros, mit denen gemeinsame Intervalle festgelegt werden. Sie können diese Verknüpfungen anstelle der fünfspaltigen Datumsangabe verwenden.

  • @yearly (oder @annually ) - Führen Sie die angegebene Aufgabe einmal im Jahr um Mitternacht (12:00 Uhr) am 1. Januar aus. Entspricht 0 0 1 1 * . @monthly - Führen Sie die angegebene Aufgabe einmal im Monat um Mitternacht am ersten Tag des Monats aus. Entspricht 0 0 1 * * . @weekly - Führen Sie die angegebene Aufgabe einmal pro Woche am Sonntag um Mitternacht aus. Entspricht 0 0 * * 0 . @daily - Führen Sie die angegebene Aufgabe einmal täglich um Mitternacht aus. Entspricht 0 0 * * * . @hourly - Führen Sie die angegebene Aufgabe einmal pro Stunde zu Beginn der Stunde aus. Entspricht 0 * * * * . @reboot - @reboot die angegebene Task beim Systemstart (Startzeit) aus.

Linux Crontab-Befehl

Mit dem Befehl crontab können Sie eine crontab-Datei zum Bearbeiten installieren oder öffnen.

Mit dem Befehl crontab können Sie Cron-Jobs mit den folgenden Optionen anzeigen, hinzufügen, entfernen oder ändern:

  • crontab -e - Bearbeiten Sie die crontab-Datei oder erstellen Sie eine, falls diese noch nicht vorhanden ist. crontab -l - Zeigt den Inhalt der crontab-Datei an. crontab -r - Entfernt Ihre aktuelle crontab-Datei. crontab -i - Entfernen Sie Ihre aktuelle crontab-Datei mit einer Eingabeaufforderung, bevor Sie sie entfernen. crontab -u - Bearbeiten Sie eine andere crontab-Datei. Erfordert Systemadministratorrechte.

Der Befehl crontab öffnet die crontab-Datei mit dem in den Umgebungsvariablen VISUAL oder EDITOR angegebenen Editor.

Crontab-Variablen

Der Cron-Daemon setzt automatisch mehrere Umgebungsvariablen.

  • Der Standardpfad lautet PATH=/usr/bin:/bin . Befindet sich der aufgerufene Befehl im von cron angegebenen Pfad, können Sie entweder den absoluten Pfad zum Befehl verwenden oder die Variable cron $PATH ändern. 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 . Sie können eine andere Shell festlegen, indem Sie die Variable SHELL ändern. SHELL ruft den Befehl aus dem SHELL des Benutzers auf. Die Variable HOME kann durch Einstellungen in der Crontab überschrieben werden. Die E-Mail-Benachrichtigung wird an den Eigentümer der Crontab gesendet. Um das Standardverhalten zu überschreiben, können Sie die Umgebungsvariable MAILTO mit einer Liste (durch Kommas getrennt) aller E-Mail-Adressen verwenden, an die Sie die E-Mail-Benachrichtigungen MAILTO möchten. Wenn MAILTO definiert, aber leer ist ( MAILTO="" ), wird keine Mail gesendet.

Crontab-Einschränkungen

Systemadministratoren können mithilfe der Dateien /etc/cron.deny und /etc/cron.allow steuern, welche Benutzer Zugriff auf den Befehl crontab . Die Dateien bestehen aus einer Liste von Benutzernamen, einem Benutzernamen pro Zeile.

Standardmäßig ist nur die Datei /etc/cron.deny vorhanden und leer. /etc/cron.deny 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 dieser Datei den Benutzernamen hinzu.

Wenn die Datei /etc/cron.allow vorhanden ist, können nur die in dieser Datei aufgeführten Benutzer den Befehl crontab .

Wenn keine der beiden Dateien vorhanden ist, können nur Benutzer mit Administratorrechten den Befehl crontab .

Cron Jobs Beispiele

Im Folgenden finden Sie einige Cron-Job-Beispiele, die zeigen, wie Sie einen Task so planen, dass er in verschiedenen Zeiträumen ausgeführt wird.

  • Führen Sie jeden Tag von Montag bis Freitag 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 . Nur der Standardfehler wird 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 täglich, stündlich und stündlich von 8.00 bis 16.00 Uhr ein Skript aus:

    00 08-16 * * * /path/to/script.sh

    Führen Sie am ersten Montag eines jeden Monats um 7 Uhr ein Skript aus

    0 7 1-7 * 1 /path/to/script.sh

    Führen Sie das a-Skript am 1. und 15. eines jeden Monats um 21:15 Uhr aus:

    15 9 1, 15 * * /path/to/script.sh

    MAILTO Variablen für HOME , PATH , SHELL und MAILTO und führen Sie 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

Fazit

Sie haben gelernt, wie Sie Cron-Jobs erstellen und Aufgaben zu einem bestimmten Datum und einer bestimmten Uhrzeit planen.

Fühlen Sie sich frei, einen Kommentar zu hinterlassen, wenn Sie Fragen haben.

cron crontab terminal