Cronjob-Format und Zeitzone

Cronjobs werden in wiederkehrenden Intervallen geplant, die in einem auf unix-cron basierenden Format angegeben werden. Sie können einen Zeitplan definieren, sodass der Job mehrmals am Tag oder an bestimmten Tagen und in bestimmten Monaten ausgeführt wird. Die Legacy-Cron-Syntax von App Engine wird für vorhandene Jobs weiterhin unterstützt, obwohl wir diese Verwendung nicht mehr empfehlen.

Cronjob-Format

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. Dabei handelt es sich um fünf Felder in einer Zeile, die angeben, wann der Job ausgeführt werden soll.

Die Zeitfelder haben das folgende Format und mögliche Werte und müssen dieser Reihenfolge entsprechen:

|------------------------------- 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 SO bis SA; oder 7 für Sonntag)
  • Minute:Gibt in Minuten an, wie weit über die Stunde hinaus Ihr Job ausgeführt wird. Wenn die Minute beispielsweise auf 0 gesetzt ist, wird der Job zur vollen Stunde ausgeführt (da dies 0 Minuten nach der vollen Stunde ist). Wenn es also 08:00 Uhr ist, wird der Job um 08:00 Uhr ausgeführt.

  • Stunde:Gibt an, wie weit nach Mitternacht Ihr Job ausgeführt wird, in Stunden (auf die nächste Stunde abgerundet, da die verbleibenden Minuten im Feld minute angegeben werden). Mitternacht ist 0 und Mittagszeit 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:Das ist das Kalenderdatum des Monats. Beispiel: 1 für den ersten Tag des Monats. Cloud Scheduler unterstützt L nicht als Verweis auf 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. z. B. 1 für Januar oder entsprechend JAN.

  • Wochentag:Gibt den Wochentag an. Montag ist 1, Dienstag ist 2 und so weiter. Entweder 0 oder 7 kann Sonntag angeben. Geben Sie den Wochentag entweder als Zahl oder nach den ersten drei Buchstaben des Wochentagsnamens in Großbuchstaben an (z. B. SUN für Sonntag).

    • Dieses Feld wird als einschließendes OR mit dem Feld day of the month ausgewertet, es sei denn, eines dieser Felder ist durch ein Sternchen (*) als uneingeschränkt gekennzeichnet. Wenn der Tag des Monats beispielsweise auf 1 und der Wochentag auf SAT gesetzt 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 ist), wird der Job nur am ersten Tag des Monats ausgeführt.

Alle Werte abgleichen

Wenn alle Werte für ein Feld übereinstimmen sollen, verwenden Sie das Sternchen: *. Wenn ein Feld auf das Sternchen gesetzt ist, stimmt das Feld mit allen gültigen Werten für dieses Feld überein, wenn die anderen Feldbedingungen erfüllt sind. Das Festlegen eines Felds auf das Sternchen wird manchmal als Uneingeschränkt bezeichnet, weil das Feld nicht auf einen bestimmten Wert beschränkt ist.

Hier zwei Beispiele, in denen das Feld für die Minuten nicht eingeschränkt ist:

  • * 0 1 1 1: Der Job wird am 1. Januar und montags jede Minute nach Mitternacht ausgeführt.
  • * * * * *: Der Job wird jede Minute ausgeführt (jede Stunde, jeden Tag des Monats, jedes Monats, jeden Tag der Woche, weil auch jedes dieser Felder uneingeschränkt ist).

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

Übereinstimmung mit einem Bereich

Um einen Bereich von Werten abzugleichen, geben Sie Start- und Stoppwerte getrennt durch einen Bindestrich (-) ein. Der Bereich darf keine Leerzeichen enthalten. Die Werte sind inklusiv. Die erste Zahl muss kleiner als die zweite Zahl sein. Wenn Sie für den Monat oder Wochentag abgekürzte Namen verwenden (z. B. JAN statt 1 für den ersten Monat des Jahres), muss der erste Wert im Monat oder in der Woche vor dem zweiten Wert stehen.

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

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

Übereinstimmung mit einer Liste

Listen können jeden gültigen Wert für das Feld enthalten, einschließlich Bereiche. Geben Sie Ihre Werte durch ein Komma getrennt an (,). Verwenden Sie keine Leerzeichen in der Liste.

Beispiele:

  • 0 0,12 * * *: Der Job wird um Mitternacht und mittags ausgeführt.
  • 0-5,30-35 * * * *: Der Job wird jeweils in den ersten fünf Minuten jeder halben Stunde ausgeführt (zur vollen Stunde und zur Hälfte nach der vollen Stunde).

Werte in einem Bereich überspringen

Sie können Werte in einem Bereich überspringen, indem Sie eine Rate angeben, mit der der Bereich durchgegangen werden soll. Dies wird manchmal als Verwendung einer Schrittfunktion (oder Schrittwert oder Ratenausdruck) bezeichnet. Geben Sie dazu den Bereich an, gefolgt von einem Schrägstrich (/) und der Rate, mit der Sie den Bereich überspringen 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 Minute, Stunde und Wochentag (Sonntag) und 1 für 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. Daher wird bei der Schrittfunktion /1 überhaupt keine Schrittfunktion verwendet.

Beispielbereiche, in denen Schrittfunktionen verwendet werden:

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

  • 0-12/2: Dies ist eine gültige Schrittfunktion für die Felder „Minute“ und „Stunde“. Er stimmt mit 0, 2, 4, ... , 12 überein.

Beispielplä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. Der erste Durchlauf ist um Mitternacht. Der letzte Durchlauf ist um 12:00 Uhr.

Beispielzeitpläne

Die folgende Tabelle enthält einige Beispiele für Cronjob-Zeitpläne und deren Beschreibung:

Zeitplan Cronjob-Format Erklärung
Jede Minute * * * * * Wird minutengenau ausgeführt. Beispiel: 9:00 Uhr, 9:01 Uhr, :02 Uhr usw.
Stündlich 0 * * * * Ausführung zur vollen Stunde. Beispiel: 9:00 Uhr, 10:00 Uhr, 11:00 Uhr usw.
Täglich 0 0 * * * Wird täglich um 00:00 Uhr (00:00 Uhr im 24-Stunden-Format) ausgeführt.
Jeden Wochentag
(Mo. bis Fr.)
Folgendes ist äquivalent:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Wird montags, dienstags, mittwochs, donnerstags und freitags um 00:00 Uhr (00:00 Uhr im 24-Stunden-Format) ausgeführt.
Wöchentlich Folgendes ist äquivalent:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
Wird sonntags um 00:00 Uhr (00:00 im 24-Stunden-Format) ausgeführt.
Monatlich 0 0 1 * * Wird um 00:00 Uhr (00:00 im 24-Stunden-Format) am ersten Tag des Monats ausgeführt.
Jedes Quartal Folgendes ist äquivalent:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Wird um 00:00 Uhr (00:00 Uhr im 24-Stunden-Format) am ersten Tag des Quartals gemäß einem standardmäßigen vierteljährlichen Zeitplan ausgeführt: 1. Januar, 1. April, 1. Juli und 1. Oktober.
Jedes Jahr Folgendes ist äquivalent:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Wird um 00:00 Uhr (00:00 Uhr im 24-Stunden-Format) am ersten Tag des ersten Monats des Jahres (1. Januar) ausgeführt.

Zeitzone

Sie können die Zeitzone zum Auswerten des Zeitplans entweder in der Google Cloud Console auswählen, indem Sie auf der Seite Job erstellen eine Zeitzone aus der Liste auswählen, oder beim Erstellen des Jobs das Flag gcloud --time-zone verwenden. Die Standardzeitzone ist Etc/UTC.

In einigen Zeitzonen kann die Sommerzeit dazu führen, dass Jobs unerwartet ausgeführt oder nicht ausgeführt werden. Das liegt daran, dass Cloud Scheduler nach der 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 der geplante Job Ausführungsanomalien beobachten.

Wenn Ihr Job einen ganz bestimmten Rhythmus erfordert, sollten Sie eine Zeitzone auswählen, in der die Sommerzeit nicht berücksichtigt wird. Für Cloud Scheduler wird insbesondere UTC empfohlen, um das Problem vollständig zu vermeiden.