Format cron job dan zona waktu

Cron job dijadwalkan pada interval berulang, yang ditentukan menggunakan format berdasarkan unix-cron. Anda dapat menentukan jadwal sehingga tugas berjalan beberapa kali sehari, atau berjalan pada hari dan bulan tertentu. (Meskipun kami tidak lagi merekomendasikan penggunaannya, sintaksis cron App Engine lama masih didukung untuk tugas yang ada.)

Format cron job

Anda dapat menggunakan konsol Google Cloud, Google Cloud CLI, atau REST API Cloud Scheduler untuk menyetel jadwal.

Jadwal ditentukan menggunakan format string unix-cron (* * * * *) yang merupakan kumpulan lima kolom dalam satu baris, yang menunjukkan kapan tugas harus dieksekusi.

Kolom waktu memiliki format dan kemungkinan nilai berikut, serta harus mengikuti urutan ini:

|------------------------------- 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)
|     |     |     |     |
|     |     |     |     |
*     *     *     *     *
Kolom Format nilai yang valid
Menit 0-59
Jam 0-23
Hari dalam sebulan 1-31
Month 1-12 (atau JAN hingga DES)
Hari dalam seminggu 0-6 (atau SUN hingga SAT; atau 7 untuk Minggu)
  • Menit: menunjukkan seberapa jauh dari bagian atas jam tugas Anda berjalan, dalam menit. Misalnya, jika menit disetel ke 0, tugas akan berjalan pada bagian atas jam (karena itu adalah 0 menit setelah jam). Jadi, jika jamnya adalah pukul 08.00, tugas akan berjalan pukul 08.00.

  • Jam: menunjukkan seberapa jauh tugas akan dijalankan, dalam jam (dibulatkan ke bawah ke jam terdekat, karena menit tersisa ditunjukkan di kolom minute). Tengah malam pukul 0 dan siang hari 12. Misalnya, jika jam disetel ke 0, tugas akan berjalan pada tengah malam (karena itu adalah 0 jam setelah tengah malam).

  • Hari dalam sebulan: menunjukkan tanggal kalender. Misalnya, 1 untuk hari pertama setiap bulan. Cloud Scheduler tidak mendukung L untuk berarti hari terakhir setiap bulan.

  • Bulan: menunjukkan bulan. Tentukan angka bulan atau tiga huruf pertama dari nama bulan dalam huruf besar. Misalnya, 1 untuk Januari, atau yang setara dengan JAN.

  • Hari dalam seminggu: menunjukkan hari. Senin adalah 1, Selasa adalah 2, dan seterusnya. 0 atau 7 dapat menunjukkan hari Minggu. Tentukan hari dalam seminggu dengan angka atau dengan tiga huruf pertama dari nama hari kerja dalam huruf besar (misalnya, SUN untuk hari Minggu).

    • Kolom ini dievaluasi sebagai OR inklusif dengan kolom day of the month, kecuali jika salah satu kolom tersebut ditandai sebagai tidak dibatasi dengan tanda bintang (*). Misalnya, jika hari ditetapkan ke 1 dan hari ditetapkan ke SAT, tugas akan berjalan pada hari pertama setiap bulan dan setiap hari Sabtu setiap bulan, meskipun hari pertama bulan tersebut bukan hari Sabtu. Jika hari dalam seminggu tidak dibatasi (ditetapkan ke *), tugas hanya akan berjalan pada hari pertama setiap bulan.

Mencocokkan semua nilai

Untuk mencocokkan semua nilai kolom, gunakan tanda bintang: *. Jika suatu kolom ditetapkan ke tanda bintang, kolom akan cocok dengan semua nilai yang valid untuk kolom tersebut setiap kali kondisi kolom lainnya terpenuhi. Menetapkan kolom ke tanda bintang terkadang disebut sebagai membiarkan kolom tidak dibatasi, karena tidak dibatasi pada nilai tertentu.

Berikut adalah dua contoh ketika kolom menit dibiarkan tidak dibatasi:

  • * 0 1 1 1: tugas berjalan setiap menit dari jam tengah malam pada 1 Januari dan Senin.
  • * * * * *: tugas berjalan setiap menit (setiap jam, setiap hari dalam sebulan, setiap bulan, setiap hari dalam seminggu, karena setiap kolom ini juga tidak dibatasi).

Tanda bintang setara dengan kasus khusus rentang, dengan rentang dimulai pada nilai valid pertama untuk kolom, dan berakhir pada nilai valid terakhir untuk kolom tersebut (misalnya, 0-59 untuk kolom menit).

Mencocokkan rentang

Untuk mencocokkan rentang nilai, tentukan nilai awal dan akhir, yang dipisahkan dengan tanda hubung (-). Jangan sertakan spasi dalam rentang. Rentang bersifat inklusif. Angka pertama harus lebih kecil dari angka kedua. Jika Anda menggunakan nama yang disingkat untuk bulan atau hari kerja (misalnya, JAN, bukan 1 untuk bulan pertama dalam setahun), nilai pertama harus muncul lebih awal di bulan atau minggu itu daripada nilai kedua.

Contoh setara berikut berjalan pada tengah malam pada hari Senin, Selasa, Rabu, Kamis, dan Jumat (untuk semua bulan):

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

Mencocokkan daftar

Daftar dapat berisi nilai yang valid untuk kolom ini, termasuk rentang. Tentukan nilai Anda, yang dipisahkan dengan koma (,). Jangan sertakan spasi dalam daftar.

Contoh:

  • 0 0,12 * * *: tugas berjalan pada tengah malam dan siang hari.
  • 0-5,30-35 * * * *: tugas berjalan di setiap lima menit pertama setiap setengah jam (di bagian atas jam dan setengah jam sebelumnya).

Melewati nilai dalam rentang

Anda dapat melewati nilai dalam rentang dengan menentukan kecepatan langkah dalam rentang tersebut. Hal ini terkadang disebut sebagai penggunaan fungsi langkah (atau nilai langkah atau ekspresi laju). Untuk melakukannya, tentukan rentang, diikuti dengan garis miring (/) dan tingkat kecepatan yang ingin Anda lewati rentangnya.

Anda dapat menggunakan tanda bintang (*) guna menunjukkan rentang semua nilai untuk kolom tersebut. Jika Anda menggunakan tanda bintang, nilai pertama dalam rentang adalah: 0 untuk kolom menit, jam, dan hari (Minggu), dan 1 untuk kolom hari dan bulan.

Nilai langkah tidak boleh lebih besar dari nilai terbesar yang memungkinkan untuk kolom. Langkah default adalah 1, sehingga fungsi langkah /1 sama dengan tidak menggunakan fungsi langkah sama sekali.

Contoh rentang yang menggunakan fungsi langkah:

  • */2: ini adalah fungsi langkah yang valid untuk kolom apa pun. Untuk isian menit, ini cocok dengan 0, 2, 4, ... , 58. Untuk jamnya, ini cocok dengan 0, 2, 4, ... , 22. Untuk hari dalam sebulan, kolom ini cocok dengan 1, 3, 5, ... , 31 (untuk sebulan dengan 31 hari). Untuk bulan ini, cocok dengan 1, 3, 5, ... , 11. Untuk hari dalam seminggu, nilainya cocok dengan 0, 2, 4, 6.

  • 0-12/2: ini adalah fungsi langkah yang valid untuk kolom menit dan jam. Hasil ini cocok dengan 0, 2, 4, ... , 12.

Contoh jadwal yang menggunakan fungsi langkah:

  • */2 * * * *: tugas berjalan setiap dua menit.

  • 0 0-12/2 * * *: tugas berjalan setiap dua jam, pada jam. Pelaksanaan pertama adalah tengah malam. Waktu berlari terakhir adalah siang hari.

Contoh jadwal

Tabel berikut menampilkan beberapa contoh jadwal cron job dan deskripsinya:

Jadwal Format cron job Penjelasan
Setiap menit * * * * * Berjalan pada menit. Misalnya, 09.00, 09.01, 02.02, dan seterusnya.
Setiap jam 0 * * * * Berjalan pada jam. Misalnya, pukul 09.00, 10.00, 11.00, dan seterusnya.
Setiap hari 0 0 * * * Berjalan pada pukul 00.00 (00.00 dalam format 24 jam) setiap hari.
Setiap hari kerja
(Sen-Jum)
Parameter berikut adalah setara:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Berjalan pada pukul 00.00 (00.00 dalam format 24 jam) pada hari Senin, Selasa, Rabu, Kamis, dan Jumat.
Setiap minggu Parameter berikut adalah setara:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
Berjalan pada hari Minggu pukul 00.00 (00.00 dalam format 24 jam).
Setiap bulan 0 0 1 * * Berjalan pada pukul 00.00 (00.00 dalam format 24 jam) pada hari pertama setiap bulan.
Setiap kuartal Parameter berikut adalah setara:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Berjalan pada pukul 00.00 (00.00 dalam format 24 jam) pada hari pertama kuartal, untuk jadwal kuartalan standar: 1 Januari, 1 April, 1 Juli, dan 1 Oktober.
Setiap tahun Parameter berikut adalah setara:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Berjalan pada pukul 00.00 (00.00 dalam format 24 jam) pada hari pertama bulan pertama setiap tahun (1 Januari).

Zona waktu

Anda dapat memilih zona waktu untuk mengevaluasi jadwal di Konsol Google Cloud (di halaman Create a job, memilih Zona Waktu dari daftar), atau melalui flag gcloud --time-zone saat Anda membuat tugas. Zona waktu default adalah Etc/UTC.

Untuk beberapa zona waktu, waktu musim panas dapat menyebabkan tugas berjalan atau tidak berjalan secara tidak terduga. Hal ini karena Cloud Scheduler berjalan berdasarkan waktu pasti. Jika waktu dapat terjadi dua kali (misalnya ketika jam mundur) dan tugas Anda dijadwalkan pada saat ini, tugas terjadwal Anda mungkin mengamati anomali eksekusi.

Jika pekerjaan Anda memerlukan ritme yang sangat spesifik, sebaiknya pertimbangkan untuk memilih zona waktu yang tidak memperhitungkan waktu musim panas. Secara khusus, UTC direkomendasikan untuk Cloud Scheduler agar sepenuhnya menghindari masalah.