Ein Leitfaden für Cron-Ausdrücke

Ein Leitfaden für Cron-Ausdrücke

1. Überblick

Kurz gesagt, cron ist ein grundlegendes Dienstprogramm, das auf Unix-basierten Systemen verfügbar ist. Hiermit können Benutzer Aufgaben so planen, dass sie regelmäßig zu einem bestimmten Zeitpunkt 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 verwendetcrontab, um die Einträge der Zeitpläne zu lesen und die Aufgaben zu starten.

Im Laufe der Zeit istthe cron expression format became widely adopted und kann häufig in vielen anderen Programmen und Bibliotheken verwendet werden.

Weitere Lektüre:

Einführung in Quarz

Erfahren Sie, wie Sie Jobs mit der Quartz-API planen.

Read more

Die @Scheduled Annotation im Frühjahr

Verwendung der Annotation @Scheduled im Frühjahr, um Aufgaben nach einer festen Verzögerung, mit einer festen Rate oder gemäß einem Cron-Ausdruck auszuführen.

Read more

2. Arbeiten mitCrontab

Der Zeitplan voncronist eine einfache Textdatei, die sich auf Linux-Systemen unter/var/spool/cron/crontabsbefindet. We cannot edit the crontab files directly; Wir müssen mit dem Befehlcrontabdarauf zugreifen.

Um beispielsweise die Dateicrontabzu öffnen, müssen Sie diesen Befehl auslösen:

crontab -e

Jede Zeile incrontab 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 Expression

Lassen Sie uns den Ausdruck voncronverstehen. Es besteht aus sechs Feldern:

       

Von diesen ist das Feld<year>optional.

3.1. Sonderzeichen im Ausdruck

  • * (all) - Hiermit wird festgelegt, dass das Ereignis für jede Zeiteinheit eintreten soll. Zum Beispiel bedeutet“*” im Feld <minute> - "für jede Minute"

  • ? (any) - wird in den Feldern <day-of-month> und <day-of -week> verwendet, um den beliebigen Wert zu bezeichnen - vernachlässigen Sie 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 im Feld <day-of-week> ein „?“ an

  • – (range) - wird verwendet, um den Wertebereich zu bestimmen. Zum Beispiel bedeutet "10-11" in<hour> Feld "10. und 11. Stunde"

  • , (values) - wird verwendet, um mehrere Werte anzugeben. Beispiel: "MON, WED, FRI” im Feld <day-of-week> bedeutet an den Tagen" Montag, Mittwoch und Freitag ".

  • / (increments) - wird verwendet, um die inkrementellen Werte anzugeben. 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 Feldern verwendet wird. Wenn es beispielsweise im Feld <day-of-month>angewendet wird, bedeutet dies den letzten Tag des Monats, d. H. "31. Januar" und so weiter gemäß Kalendermonat. Es kann mit einem Versatzwert wie „L-3“ verwendet werden, der den „drittletzten Tag des Kalendermonats“ bezeichnet. In den <day-of-week> wird der „letzte Tag einer Woche“ angegeben. Es kann auch mit einem anderen Wert in <day-of-week> verwendet werden, z. B. "6L", der den "letzten Freitag" bezeichnet.

  • W (weekday) - wird verwendet, um den Wochentag (Montag bis Freitag) anzugeben, der einem bestimmten Tag des Monats am nächsten liegt. Wenn wir beispielsweise "10W" im Feld <day-of-month> angeben, bedeutet dies den "Wochentag nahe dem 10. dieses Monats". Wenn also „10.“ ein Samstag ist, wird der Job am 9. und wenn „10.“ ein Sonntag ist, wird er am 11. ausgelöst. Wenn Sie in <day-of-month> "1W" angeben und "1st" Samstag ist, wird der Job am "3rd" (Montag) ausgelöst und springt nicht zum Vormonat zurück

  • # - wird verwendet, um das "N-te" Vorkommen eines Wochentags des Monats anzugeben. 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 voncronanhand der Kombinationen aus Feldern und Sonderzeichen sehen:

Während des Jahres 2017 jeden Tag um 12:00 Uhr (mittags):

0 0 12 * * ? 2017

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 0/5 13,18 * * ?

Jede Minute, beginnend um 13 Uhr und endend 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

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

0 30 9 15 * ?

Am letzten Tag eines jeden Monats um 18 Uhr:

0 0 18 L * ?

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

0 0 18 L-3 * ?

Jeden letzten Donnerstag im Monat um 10:30 Uhr:

0 30 10 ? * 5L

In den Jahren 2015, 2016 und 2017 jeden letzten Freitag im Monat um 18 Uhr:

0 0 18 ? * 6L 2015-2017

Jeden dritten Montag im Monat um 10 Uhr:

0 0 10 ? * 2#3

Täglich um 12 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 einige spezielle, vordefinierte Werte unterstützt, die anstelle der Felder verwendet werden können:

  • @reboot - einmal beim Start ausführen

  • @yearly oder@annualy - einmal im Jahr ausgeführt

  • @monthly - einmal im Monat ausführen

  • @weekly - einmal pro Woche ausführen

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

  • @hourly - wird stündlich ausgeführt

5. Fazit

In diesem kurzen Artikel haben wir uns mit den Jobs voncronundcrontabbefasst.

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