Ein Leitfaden für Cron-Ausdrücke

1. Überblick

Einfach ausgedrückt, ist cron ein grundlegendes Dienstprogramm, das auf Unix-basierten Systemen verfügbar ist. Es ermöglicht Benutzern, Zeitpläne zu einem bestimmten Datum und zu einer bestimmten Zeit einzuplanen. Natürlich ist es ein hervorragendes Werkzeug für die Automatisierung vieler Prozessabläufe, für die sonst ein Eingreifen erforderlich wäre.

Cron läuft als Daemon-Prozess - das heißt, es muss nur einmal gestartet werden und läuft im Hintergrund weiter. 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 kann häufig in vielen anderen Programmen und Bibliotheken verwendet werden.

2. Mit Crontab arbeiten

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

Um die crontab -Datei zu öffnen, müssen Sie beispielsweise den folgenden 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 wird hinzugefügt, um das erwähnte Skript jede Sekunde auszuführen.

3. Cron Ausdruck

Verstehen wir den cron -Ausdruck. Es besteht aus sechs Feldern:

<second> <minute> <hour> <day-of-month> <month> <day-of-week> <year> <command>

Von diesen ist das Feld <year> optional.

3.1. Sonderzeichen in Ausdruck

  • __ (alle) ** - wird verwendet, um anzugeben, dass das Ereignis stattfinden soll

jede Zeiteinheit. Beispielsweise bedeutet " " im Feld < _ minute> - "Für jede Minute" ? (any) - wird am < Tag des Monats> und am < _ Tag des Tages verwendet

-Woche> _ Felder um den beliebigen Wert zu bezeichnen - das Feld zu vernachlässigen Wert. Wenn wir zum Beispiel am 5. jedes Monats ein Skript ausgeben wollen Unabhängig davon, was der Tag der Woche auf diesen Tag fällt, werden wir Geben Sie im Feld < Wochentag> ein " ? _ " an - (Bereich) ** - dient zur Bestimmung des Wertebereichs. Zum Beispiel,

" 10-11 " im <hour> Feld bedeutet "10. und 11. Stunde" , (Werte) ** - wird zur Angabe mehrerer Werte verwendet. Zum Beispiel,

" MON, MI, FR" in Feld < Wochentag> __ bedeutet an den Tagen "Montag Mittwoch und Freitag" /(inkremente) ** - dient zur Angabe der inkrementellen Werte. Zum

Ein "5/15" im Feld < _ minute> _ bedeutet beispielsweise "5, 20, 35 und 50 Minuten einer Stunde ” L (last) ** - hat unterschiedliche Bedeutungen, wenn sie in verschiedenen Bereichen verwendet werden.

Wenn es beispielsweise im Feld < _ Tag des Monats> angewendet wird, bedeutet letzten Tag des Monats, d. h. "31. Januar" und so weiter der Kalendermonat Es kann mit einem Offset-Wert verwendet werden, wie „ L-3 “. Dies bezeichnet den "dritten bis letzten Tag des Kalendermonats". In dem < Wochentag> gibt den "letzten Tag einer Woche" an. Es kann auch sein Wird mit einem anderen Wert in < Wochentag> verwendet, z. B. „ 6L_ “, der angibt der "letzte Freitag" W (Wochentag) ** - dient zur Angabe des Wochentags (Montag bis Freitag)

am nächsten zu einem bestimmten Tag des Monats. Wenn wir beispielsweise " 10W " angeben im Feld < _ Tag des Monats> bedeutet dies den "Wochentag in der Nähe von 10 dieses Monats “. Wenn also "10th" ein Samstag ist, dann wird der Job sein wird an „9th“ ausgelöst, und wenn „10th“ ein Sonntag ist, wird es an ausgelöst "11.". Wenn Sie im < Tag des Monats> " 1W " angeben und "1." ist Samstag, dann wird der Job am "3." (Montag) ausgelöst es wird nicht zum vorherigen Monat zurückspringen # ** - wird verwendet, um das Vorkommen eines Wochentages von " N_ -ten" anzugeben

Zum Beispiel kann der 3. Freitag des Monats als „ 6 # 3 “ angegeben werden

3.2. Beispiele für Cron-Expression

Lassen Sie uns einige Beispiele für cron expression sehen, indem Sie die Kombinationen aus Feldern und Sonderzeichen verwenden:

  • Während des Jahres 2017 jeden Tag um 12:00 Uhr: **

0 0 12 **  **  ? 2017
  • Alle 5 Minuten ab 13 Uhr bis 13:55 Uhr und dann ab 18 Uhr bis 1855 Uhr.

0 0/5 13,18 **  **  ?
  • Jede Minute beginnt um 13 Uhr und endet um 13:05 Uhr, jeden Tag: **

0 0-5 13 **  **  ?
  • Jeden Dienstag im Juni um 13.15 Uhr und 13.45 Uhr: **

0 15,45 13 ? 6 Tue
  • Jeden Montag, Dienstag, Mittwoch, Donnerstag und Freitag um 9:30 Uhr: **

0 30 9 ? **  MON-FRI
  • Um 15.30 Uhr am 15. jeden Monats: **

0 30 9 15 **  ?
  • Um 18 Uhr am letzten Tag jedes Monats: **

0 0 18 L **  ?
  • Am 3. bis letzten Tag jeden Monats um 18 Uhr:

0 0 18 L-3 **  ?
  • Am letzten Donnerstag des Monats um 10:30 Uhr: **

0 30 10 ? **  5L
  • Am letzten Freitag jedes Monats um 18 Uhr in den Jahren 2015, 2016 und 2017: **

0 0 18 ? **  6L 2015-2017
  • Am 3. Montag jeden Monats um 10 Uhr: **

0 0 10 ? **  2#3
  • Jeden Tag um 5 Uhr Mitternacht an fünf Tagen ab dem 10. Tag des Monats: **

0 0 0 10/5 **  ?

4. Cron Special Strings

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

  • @ reboot - einmal beim Start ausführen

  • @ annual oder @ annualy - wird einmal im Jahr ausgeführt

  • @ month - einmal monatlich ausführen

  • @ wöchentlich - einmal pro Woche ausführen

  • @ daily oder @ midnight - einmal täglich ausführen

  • @ hourly - stündlich laufen

5. Fazit

In diesem kurzen Artikel haben wir uns mit den cron -Jobs und crontab auseinandergesetzt.

Wir haben auch eine Reihe von Ausdrucksbeispielen gesehen, die Sie in Ihrer täglichen Arbeit verwenden können oder einfach andere Ausdrücke daraus ableiten können.