GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Planen von Cron-Jobs mit Crontab

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 Sie 1,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 Sie 1-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 von 0,4,8,12,16,20 . Statt Stern vor dem Schrägstrich-Operator 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 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. 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. Äquivalent zu 0 * * * * .
  • @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 Sie SHELL 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. Wenn MAILTO 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 und MAILTO 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.


Linux
  1. Planen von Aufgaben mit dem Linux-Cron-Befehl

  2. Planen von Systemaufgaben mit Cron unter Linux

  3. Verwenden Sie Notify-Send mit Cron?

  4. Automatisieren Sie Systemaufgaben mit crontab auf CentOS 7

  5. Stellen Sie Cron-Jobs wieder her, die versehentlich mit crontab -r entfernt wurden

Terminplanung mit cron &At

Cron-Jobs und Crontab unter Linux erklärt

Crontab in Linux mit Beispielen verstehen

Linux-crontab-Befehl zum Erstellen und Verwalten von Cron-Jobs

So planen Sie Jobs mit Cron in Linux

10 nützliche Cron-Beispiele zum Planen von Jobs unter Linux