Format und Zeitzone des Cronjobs

Cronjobs werden zur Ausführung in wiederkehrenden Intervallen geplant, die in einem Format angegeben werden, das auf unix-cron basiert. In einem Zeitplan können Sie festlegen, ob der Job mehrmals am Tag oder an bestimmten Tagen und in bestimmten Monaten ausgeführt wird. Die alte Cron-Syntax von App Engine wird für vorhandene Jobs zwar nicht mehr empfohlen, aber weiterhin unterstützt.

Format für Cronjobs

Sie können entweder die Google Cloud Console, die Google Cloud CLI oder die REST API von Cloud Scheduler 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 DEC)
Wochentag 0–6 (oder SUN bis SAT oder 7 für Sonntag)
  • Minute:Gibt an, wie viele Minuten nach der vollen Stunde der 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 der vollen Stunde ist. Wenn die Stunde also 8:00 Uhr ist, wird der Job um 8:00 Uhr ausgeführt.

  • Stunde:Gibt an, wie lange nach Mitternacht der Job ausgeführt wird (auf die nächste Stunde abgerundet, da die verbleibenden Minuten im Feld minute angegeben sind). Mitternacht ist 0 und Mittag ist 12. Wenn die Stunde beispielsweise auf 0 festgelegt ist, wird der Job um Mitternacht 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. In Cloud Scheduler wird L nicht als letzter Tag des Monats unterstützt.

  • 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 JAN.

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

    • Dieses Feld wird zusammen mit dem Feld day of the month als inklusive OR ausgewertet, es sei denn, eines dieser Felder ist durch den Stern (*) 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 nicht eingeschränkt ist (auf * gesetzt), wird der Job nur am ersten Tag des Monats ausgeführt.

Übereinstimmung mit allen Werten

Wenn alle Werte für ein Feld abgeglichen werden sollen, verwenden Sie den Stern: *. Wenn für ein Feld der Sternchen-Operator festgelegt ist, wird das Feld mit allen gültigen Werten für dieses Feld abgeglichen, wenn die anderen Feldbedingungen erfüllt sind. Wenn Sie ein Feld auf den Stern setzen, wird das Feld manchmal auch als uneingeschränkt bezeichnet, da es nicht auf einen bestimmten Wert beschränkt ist.

Hier sind zwei Beispiele, in denen das Minutenfeld uneingeschränkt ist:

  • * 0 1 1 1: Der Job wird am 1. Januar und montags jede Minute um Mitternacht ausgeführt.
  • * * * * *: Der Job wird jede Minute (jeder Stunde, jedes Tages des Monats, jedes Monats, jedes Tages der Woche) ausgeführt, da auch jedes dieser Felder nicht eingeschränkt ist.

Der Stern 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 Minutenfeld).

Bereich abgleichen

Wenn Sie einen Wertebereich angeben möchten, geben Sie den Start- und Endwert durch einen Bindestrich (-) getrennt an. Der Bereich darf keine Leerzeichen enthalten. Bereiche sind inkl. 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 im Monat oder in der Woche vor dem zweiten Wert liegen.

Die folgenden äquivalenten Beispiele werden montags, dienstags, mittwochs, donnerstags und freitags (für alle Monate) um Mitternacht ausgeführt:

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

Liste abgleichen

Listen können beliebige gültige Werte für das Feld enthalten, einschließlich Bereiche. Geben Sie die Werte durch Komma (,) getrennt an. Die Liste darf keine Leerzeichen enthalten.

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 (um 00:00 und 30:00 Uhr) ausgeführt.

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 Schrittfunktion (oder Schrittwert oder Steuersatzausdruck) bezeichnet. Geben Sie dazu den Bereich gefolgt vom Schrägstrich (/) und der Geschwindigkeit an, mit der Sie den Bereich überspringen möchten.

Sie können den Stern (*) verwenden, um den Bereich aller Werte für das Feld anzugeben. Wenn Sie den Stern verwenden, ist der erste Wert im Bereich 0 für die Felder „Minute“, „Stunde“ und „Wochentag“ (Sonntag) und 1 für die Felder „Tag des Monats“ und „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 ist also mit der Nichtverwendung einer Schrittfunktion identisch.

Beispielbereiche mit Schrittfunktionen:

  • */2: Dies ist eine gültige Stufenfunktion für jedes Feld. Für das Minutenfeld entspricht dies den Werten 0, 2, 4, …, 58. Für die Stunde wird „0“, „2“, „4“, …, „22“ verwendet. Für den Tag des Monats entspricht dies den Werten 1, 3, 5, …, 31 (für einen Monat mit 31 Tagen). Für den Monat entspricht es den Werten 1, 3, 5, …, 11. Für den Wochentag entspricht das den Werten 0, 2, 4 und 6.

  • 0-12/2: Dies ist eine gültige Schrittfunktion für die Felder „Minute“ und „Stunde“. Es entspricht den Zahlen 0, 2, 4, …, 12.

Beispiele für Zeitpläne mit Treppenfunktionen:

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

  • 0 0-12/2 * * *: Der Job wird alle zwei Stunden stündlich ausgeführt. Die erste Ausführung erfolgt um Mitternacht. Die letzte Ausführung erfolgt um 12:00 Uhr.

Beispielzeitpläne

Die folgende Tabelle enthält einige Beispiele für Zeitpläne von Cron-Jobs und ihre Beschreibung:

Planen Format für Cronjobs Erklärung
Jede Minute * * * * * Die Ausführung erfolgt auf die Minute genau. Beispiel: 9:00, 9:01, 9:02 Uhr usw.
Stündlich 0 * * * * Wird stündlich ausgeführt. Beispiel: 9:00, 10:00, 11:00 Uhr usw.
Täglich 0 0 * * * Wird jeden Tag um 00:00 Uhr (24-Stunden-Format) ausgeführt.
Jeden Wochentag
(Mo–Fr)
Folgendes ist äquivalent:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Wird montags, dienstags, mittwochs, donnerstags und freitags um 00:00 Uhr (24-Stunden-Format) ausgeführt.
Jede Woche Folgendes ist äquivalent:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
Wird sonntags um 00:00 Uhr (24-Stunden-Format) ausgeführt.
Monatlich 0 0 1 * * Wird am ersten Tag des Monats um 00:00 Uhr (24-Stunden-Format) ausgeführt.
Jedes Quartal Folgendes ist äquivalent:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Wird am ersten Tag des Quartals um 00:00 Uhr (24-Stunden-Format) ausgeführt, wenn ein standardmäßiger vierteljährlicher Zeitplan verwendet wird: 1. Januar, 1. April, 1. Juli und 1. Oktober.
Jedes Jahr Folgendes ist äquivalent:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Wird am ersten Tag des ersten Monats des Jahres (1. Januar) um 00:00 Uhr (24-Stunden-Format) ausgeführt.

Zeitzone

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

Der Wert dieses Felds muss der Zeitzonenkürzel sein, das in der tz-Datenbank verwendet wird. Die Standardzeitzone ist UTC.

In einigen Zeitzonen kann die Sommerzeit dazu führen, dass Jobs unerwartet ausgeführt werden oder nicht. 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 rückwärts springen) 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. Für Cloud Scheduler wird UTC empfohlen, um das Problem ganz zu vermeiden.

Nächste Schritte