Eine Anleitung zu Cron-Ausdrücken

1. Übersicht

Einfach ausgedrückt ist cron ein grundlegendes Dienstprogramm, das auf Unix-basierten Systemen verfügbar ist. Benutzer können damit planen, dass Aufgaben regelmäßig zu einem bestimmten Datum / einer bestimmten Uhrzeit ausgeführt werden. Und es ist natürlich ein großartiges Werkzeug zur Automatisierung vieler Prozessläufe, die andernfalls menschliches Eingreifen erfordern würden.

Cron wird als Daemon-Prozess ausgeführt. Dies bedeutet, dass es nur einmal gestartet werden muss und weiterhin im Hintergrund ausgeführt wird. Dieser Prozess verwendet crontab , um die Einträge der Zeitpläne zu lesen und die Aufgaben zu starten.

Im Laufe der Zeit wurde das Cron-Ausdrucksformat weit verbreitet und von vielen anderen Programmen und Bibliotheken verwendet.

2. Arbeiten mit Crontab

Ein Cron- Zeitplan ist eine einfache Textdatei, die sich auf Linux-Systemen unter / var / spool / cron / crontabs befindet . Wir können die crontab- Dateien nicht direkt bearbeiten . Wir müssen mit dem Befehl crontab darauf zugreifen .

Um beispielsweise eine crontab- Datei zu öffnen , müssen Sie diesen Befehl auslösen :

crontab -e

Jede Zeile in crontab ist ein Eintrag mit einem Ausdruck und einem auszuführenden Befehl:

* * * * * /usr/local/ispconfig/server/server.sh

Dieser Eintrag führt das erwähnte Skript jede Minute aus.

3. Cron Expression

Lassen Sie uns den Cron- Ausdruck verstehen . Es besteht aus fünf Feldern:

3.1. Sonderzeichen im Ausdruck

  • * (all) - Gibt an, dass das Ereignis für jede Zeiteinheit eintreten soll. Zum Beispiel bedeutet "*" im Feld < Minute> "für jede Minute"
  • ? (beliebig) - wird in den Feldern < Tag des Monats> und < Tag der Woche> verwendet, um den beliebigen Wert anzugeben - vernachlässigt den Feldwert . Wenn wir beispielsweise ein Skript am „5. eines jeden Monats“ auslösen möchten, unabhängig davon, welcher Wochentag auf dieses Datum fällt, geben wir ein „ ? ”Im Feld < Wochentag>
  • - (Bereich) - bestimmt den Wertebereich. Zum Beispiel " 10-11 " in Feld bedeutet "10. und 11. Stunde"
  • , (Werte) - Gibt mehrere Werte an. Zum Beispiel bedeutet " MON, MI, FR" im Feld < Wochentag> an den Tagen "Montag, Mittwoch und Freitag".
  • / (Inkremente) - Gibt die inkrementellen Werte an. Zum Beispiel bedeutet ein "5/15" im Feld < Minute> "5, 20, 35 und 50 Minuten einer Stunde".
  • L (last) - es hat unterschiedliche Bedeutungen, wenn es in verschiedenen Bereichen verwendet wird. Wenn es beispielsweise im Feld < Tag des Monats> angewendet wird , bedeutet dies den letzten Tag des Monats, dh "31. für Januar" usw. gemäß Kalendermonat. Es kann mit einem Versatzwert wie „ L-3 “ verwendet werden, der den „dritten bis letzten Tag des Kalendermonats“ bezeichnet. Im < Wochentag> wird der „letzte Tag einer Woche“ angegeben. Es kann auch mit einem anderen Wert in < Wochentag> verwendet werden , z. B. „ 6L “, der den „letzten Freitag“ bezeichnet.
  • W (Wochentag) - Bestimmt den Wochentag (Montag bis Freitag), der einem bestimmten Tag des Monats am nächsten liegt. Wenn wir beispielsweise im Feld < Tag des Monats> "10 W " angeben , bedeutet dies den "Wochentag nahe dem 10. dieses Monats". Wenn also "10." ein Samstag ist, wird der Job am "9." ausgelöst, und wenn "10." ein Sonntag ist, wird er am "11." ausgelöst. Wenn wir im < Tag des Monats> " 1W " angeben und "1." Samstag ist, wird der Job am "3.", dem Montag, ausgelöst und springt nicht zum Vormonat zurück
  • # - Gibt das " N- te" Vorkommen eines Wochentags des Monats an. Beispielsweise kann "3. Freitag des Monats" als " 6 # 3 " angegeben werden.

3.2. Beispiele für die Cron-Expression

Lassen Sie uns einige Beispiele für den Ausdruck von Cron anhand der Kombinationen aus Feldern und Sonderzeichen sehen:

Jeden Tag um 12:00 Uhr (mittags):

0 12 * * ?

Alle 5 Minuten, beginnend um 13 Uhr und endend um 13:55 Uhr und dann beginnend um 18 Uhr und endend um 18:55 Uhr, jeden Tag:

0/5 13,18 * * ?

Jede Minute, beginnend um 13 Uhr und endend um 13:05 Uhr, jeden Tag:

0-5 13 * * ?

Jeden Dienstag im Juni um 13:15 Uhr und 13:45 Uhr:

15,45 13 ? 6 Tue

Jeden Montag, Dienstag, Mittwoch, Donnerstag und Freitag um 9:30 Uhr:

30 9 ? * MON-FRI

Am 15. eines jeden Monats um 9:30 Uhr:

30 9 15 * ?

Am letzten Tag eines jeden Monats um 18 Uhr:

0 18 L * ?

Am 3. bis letzten Tag eines jeden Monats um 18 Uhr:

0 18 L-3 * ?

Jeden letzten Donnerstag im Monat um 10:30 Uhr:

30 10 ? * 5L

Jeden dritten Montag im Monat um 10 Uhr:

0 10 ? * 2#3

Täglich um 12 Uhr Mitternacht an fünf Tagen ab dem 10. Tag des Monats:

0 0 10/5 * ?

4. Cron Special Strings

Zusätzlich zu den im Cron-Ausdruck angegebenen Feldern werden auch einige spezielle, vordefinierte Werte unterstützt, die wir anstelle der Felder verwenden können:

  • @reboot - einmal beim Start ausführen
  • @Jahr oder @Jahr - einmal im Jahr laufen
  • @ monatlich - einmal im Monat ausführen
  • @ wöchentlich - einmal pro Woche laufen
  • @daily oder @midnight - einmal am Tag laufen
  • @hourly - stündlich laufen

5. Schlussfolgerung

In diesem kurzen Artikel haben wir die Cron- Jobs und Crontab untersucht .

Wir haben auch eine Reihe von Ausdrucksbeispielen gesehen, die wir in unserer täglichen Arbeit verwenden oder einfach aus anderen Ausdrücken ableiten können.