Cronjob-Format und Zeitzone

Cronjobs werden zur Ausführung in wiederkehrenden Intervallen geplant, die in einem Format angegeben werden, das auf unix-cron basiert. In Zeitplänen können Sie festlegen, ob der Job mehrmals am Tag, an bestimmten Tagen oder in bestimmten Monaten ausgeführt werden soll. (Obwohl wir die Verwendung nicht mehr empfehlen, wird die Planung eines Jobs durch Erstellen einer cron.yaml Datei für vorhandene Jobs weiterhin unterstützt.)

Cloud Scheduler unterstützt auch die Planung von Jobs in einem besser lesbaren Format. Weitere Informationen finden Sie in diesem Dokument unter Alternatives Jobformat.

Cronjob-Format

Sie können entweder die Google Cloud Konsole, die Google Cloud CLI oder die Cloud Scheduler REST API verwenden, um Ihren Zeitplan festzulegen.

Ein Zeitplan wird im Unix-Cron-Stringformat (* * * * *) definiert, bei dem es sich um einen Satz von fünf Feldern in einer Zeile handelt, der angibt, wann der Job ausgeführt werden soll.

Die Zeitfelder haben das folgende Format und die folgenden möglichen Werte und müssen in dieser Reihenfolge angegeben werden:

|------------------------------- Minute (0-59)
|     |------------------------- Hour (0-23)
|     |     |------------------- Day of the month (1-31)
|     |     |     |------------- Month (1-12; or JAN to DEC)
|     |     |     |     |------- Day of the week (0-6; or SUN to SAT; or 7 for Sunday)
|     |     |     |     |
|     |     |     |     |
*     *     *     *     *
Feld Format gültiger Werte
Minute 0–59
Stunde 0–23
Day of the month 1–31
Monat 1–12 (oder JAN bis DEZ)
Wochentag 0–6 (oder SON bis SAM oder 7 für Sonntag)
  • Minute:Gibt an, wie viele Minuten nach Beginn der Stunde Ihr Job ausgeführt wird. Wenn die Minute beispielsweise auf 0 festgelegt ist, wird der Job zu Beginn der Stunde ausgeführt (da dies 0 Minuten nach Beginn der Stunde ist). Wenn die Stunde also 8:00 Uhr ist, wird der Job um 8:00 Uhr ausgeführt.

  • Stunde:Gibt an, wie viele Stunden nach Mitternacht Ihr Job ausgeführt wird (abgerundet auf die nächste Stunde, da die verbleibenden Minuten im Feld minute angegeben werden). Mitternacht ist 0 und Mittag ist 12. Wenn die Stunde beispielsweise auf 0 festgelegt ist, wird der Job in der Mitternachtsstunde ausgeführt (da dies 0 Stunden nach Mitternacht ist).

  • Tag des Monats:Gibt das Kalenderdatum des Monats an. Beispiel: 1 für den ersten Tag des Monats. Cloud Scheduler unterstützt L nicht für den letzten Tag des Monats.

  • Monat:Gibt den Monat an. Geben Sie die Monatsnummer oder die ersten drei Buchstaben des Monatsnamens in Großbuchstaben an. Beispiel: 1 für Januar oder entsprechend JAN.

  • Wochentag:Gibt den Wochentag an. Beispiel: Montag ist 1 und Dienstag ist 2. Sonntag kann entweder durch 0 oder 7 angegeben werden. Geben Sie den Wochentag entweder als Zahl oder mit den ersten drei Buchstaben des Wochentagsnamens in Großbuchstaben an (z. B. SUN für Sonntag).

    • Dieses Feld wird als inklusives OR mit dem day of the month Feld ausgewertet, es sei denn, eines dieser Felder ist mit dem Sternchen (*) als uneingeschränkt gekennzeichnet. Wenn beispielsweise der Tag des Monats auf 1 und der Wochentag auf SAT festgelegt ist, wird der Job am ersten Tag des Monats und an jedem Samstag des Monats ausgeführt, auch wenn der erste Tag des Monats kein Samstag ist. Wenn der Wochentag uneingeschränkt ist (auf * festgelegt), wird der Job nur am ersten Tag des Monats ausgeführt.

Alle Werte abgleichen

Verwenden Sie das Sternchen (*), um alle Werte für ein Feld abzugleichen. Wenn ein Feld auf das Sternchen gesetzt ist, werden alle gültigen Werte für dieses Feld abgeglichen, wenn die anderen Feldbedingungen erfüllt sind. Wenn ein Feld auf das Sternchen gesetzt wird, wird es manchmal als uneingeschränkt bezeichnet, da es nicht auf einen bestimmten Wert beschränkt ist.

Hier sind zwei Beispiele, in denen das Feld für die Minute uneingeschränkt bleibt:

  • * 0 1 1 1: Der Job wird jede Minute der Mitternachtsstunde am 1. Januar und an Montagen ausgeführt.
  • * * * * *: Der Job wird jede Minute (jeder Stunde, jedes Tages des Monats, jedes Monats, jedes Wochentags) ausgeführt, da auch jedes dieser Felder uneingeschränkt ist.

Das Sternchen entspricht einem Sonderfall eines Bereichs, bei dem der Bereich mit dem ersten gültigen Wert für das Feld beginnt und mit dem letzten gültigen Wert für das Feld endet (z. B. 0-59 für das Feld für die Minute).

Bereich abgleichen

Wenn Sie einen Wertebereich abgleichen möchten, geben Sie die Start- und Endwerte an, getrennt durch einen Bindestrich (-). Lassen Sie keine Leerzeichen im Bereich. Bereiche sind inklusiv. Die erste Zahl muss kleiner als die zweite Zahl sein. Wenn Sie abgekürzte Namen für den Monat oder Wochentag verwenden (z. B. JAN anstelle von 1 für den ersten Monat des Jahres), muss der erste Wert früher im Monat oder in der Woche liegen als der zweite Wert.

Die folgenden gleichwertigen Beispiele werden an Montagen, Dienstagen, Mittwochen, Donnerstagen und Freitagen um Mitternacht ausgeführt (für alle Monate):

  • 0 0 * * 1-5
  • 0 0 * * MON-FRI

Liste abgleichen

Listen können jeden gültigen Wert für das Feld enthalten, einschließlich Bereichen. Geben Sie die Werte durch Kommas getrennt an (,). Lassen Sie keine Leerzeichen in der Liste.

Beispiele:

  • 0 0,12 * * *: Der Job wird um Mitternacht und Mittag ausgeführt.
  • 0-5,30-35 * * * *: Der Job wird in den ersten fünf Minuten jeder halben Stunde ausgeführt (zu Beginn der Stunde und um halb).

Werte in einem Bereich überspringen

Sie können Werte in einem Bereich überspringen, indem Sie eine Rate angeben, mit der der Bereich durchlaufen werden soll. Dies wird manchmal als Verwendung einer Schrittfunktion (oder eines Schrittwerts oder Rateausdrucks) bezeichnet. Geben Sie dazu den Bereich an, gefolgt vom Schrägstrich (/) und der Rate, mit der Sie den Bereich durchlaufen möchten.

Sie können das Sternchen (*) verwenden, um den Bereich aller Werte für das Feld anzugeben. Wenn Sie das Sternchen verwenden, ist der erste Wert im Bereich: 0 für die Felder für die Minute, Stunde und den Wochentag (Sonntag) und 1 für die Felder für den Tag des Monats und den Monat.

Der Schrittwert darf nicht größer als der größtmögliche Wert für das Feld sein. Der Standardschritt ist 1. Die Schrittfunktion /1 entspricht also der Verwendung keiner Schrittfunktion.

Beispielbereiche, die Schrittfunktionen verwenden:

  • */2: Dies ist eine gültige Schrittfunktion für jedes Feld. Für das Feld für die Minute werden die Werte 0, 2, 4, ... , 58 abgeglichen. Für die Stunde werden die Werte 0, 2, 4, ... , 22 abgeglichen. Für den Tag des Monats werden die Werte 1, 3, 5, ... , 31 abgeglichen (für einen Monat mit 31 Tagen). Für den Monat werden die Werte 1, 3, 5, ... , 11 abgeglichen. Für den Wochentag werden die Werte 0, 2, 4, 6 abgeglichen.

  • 0-12/2: Dies ist eine gültige Schrittfunktion für die Felder für die Minute und Stunde. Die Werte 0, 2, 4, ... , 12 werden abgeglichen.

Beispielzeitpläne mit Schrittfunktionen:

  • */2 * * * *: Der Job wird alle zwei Minuten ausgeführt.

  • 0 0-12/2 * * *: Der Job wird alle zwei Stunden zur vollen Stunde ausgeführt. Die erste Ausführung erfolgt um Mitternacht. Die letzte Ausführung erfolgt um Mittag.

Beispielzeitpläne

In der folgenden Tabelle sind einige Beispielzeitpläne für Cronjobs und ihre Beschreibung aufgeführt:

Zeitplan Cronjob-Format Erklärung
Jede Minute * * * * * Wird jede Minute ausgeführt. Beispiel: 9:00 Uhr, 9:01 Uhr, 9:02 Uhr usw.
Stündlich 0 * * * * Wird zu Beginn jeder Stunde ausgeführt. Beispiel: 9:00 Uhr, 10:00 Uhr, 11:00 Uhr usw.
Täglich 0 0 * * * Wird jeden Tag um 00:00 Uhr (12:00 Uhr im 24-Stunden-Format) ausgeführt.
Jeden Wochentag
(Mo–Fr)
Die folgenden Angaben sind gleichwertig:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Wird an Montagen, Dienstagen, Mittwochen, Donnerstagen und Freitagen um 00:00 Uhr (12:00 Uhr im 24-Stunden-Format) ausgeführt.
Jede Woche Die folgenden Angaben sind gleichwertig:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
Wird sonntags um 00:00 Uhr (12:00 Uhr im 24-Stunden-Format) ausgeführt.
Monatlich 0 0 1 * * Wird am ersten Tag des Monats um 00:00 Uhr (12:00 Uhr im 24-Stunden-Format) ausgeführt.
Jedes Quartal Die folgenden Angaben sind gleichwertig:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Wird am ersten Tag des Quartals um 00:00 Uhr (12:00 Uhr im 24-Stunden-Format) ausgeführt, für einen standardmäßigen vierteljährlichen Zeitplan: 1. Januar, 1. April, 1. Juli und 1. Oktober.
Jedes Jahr Die folgenden Angaben sind gleichwertig:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Wird am ersten Tag des ersten Monats des Jahres (1. Januar) um 00:00 Uhr (12:00 Uhr im 24-Stunden-Format) ausgeführt.

Zeitzone

Sie können die Zeitzone für die Auswertung des Zeitplans entweder in der Google Cloud Konsole (auf der Seite Job erstellen eine Zeitzone aus der Liste auswählen) oder über das gcloud --time-zone-Flag beim Erstellen des Jobs auswählen.

Der Wert dieses Feldes muss die in der tz-Datenbank verwendete Zeitzonenabkürzung sein. Die Standardzeitzone ist UTC.

In einigen Zeitzonen kann die Sommerzeit dazu führen, dass Jobs unerwartet ausgeführt werden oder nicht ausgeführt werden. Dies liegt daran, dass Cloud Scheduler zur tatsächlich verstrichenen Zeit ausgeführt wird. In Fällen, in denen eine Zeit zweimal auftreten kann (z. B. wenn die Uhren zurückgestellt werden) und Ihr Job zu diesem Zeitpunkt geplant ist, kann es bei Ihrem geplanten Job zu Ausführungsanomalien kommen.

Wenn für Ihren Job ein sehr spezifischer Rhythmus erforderlich ist, können Sie eine Zeitzone auswählen, die die Sommerzeit nicht berücksichtigt. Insbesondere wird UTC für Cloud Scheduler empfohlen, um das Problem vollständig zu vermeiden.

Alternatives Jobformat

Sie können ein besser lesbares Format für die Zeitangabe verwenden, das als groc bezeichnet wird und eine Alternative zu Cron-Ausdrücken bietet.

Wenn Sie einen Jobzeitplan mit groc angeben, müssen Sie entweder die gcloud CLI verwenden oder eine direkte Anfrage an die Cloud Scheduler API senden.

Einige wiederkehrende Ereignisse lassen sich beispielsweise mit Cron nur schwer angeben, z. B. „jeden Monat am dritten Dienstag“ oder „alle zwei Wochen“ (alle 336 Stunden). In solchen Fällen können Sie stattdessen Konstrukte wie in den folgenden Beispielen verwenden:

03 of month 12:34
1,3,4,7,11,18,29 of jan,jul 12:34
1st friday of quarter 9:00
1st,third monday of month 04:00
2nd,3rd tue,wed,thu of feb,aug 13:50
every 336 hours
every 48 hours
every 5 minutes
every 60 minutes on mon,wed
every day 09:00
every minute
every sun,tue,thu 9:00
every wed of december 00:00
first sunday of month 12:00
second,4th tue,thursday of 3rd month of quarter 18:30

Weitere Informationen zur Syntax finden Sie unter Zeitplan für Cronjobs definieren.

Nächste Schritte