Pengurai Ekspresi Cron

format: menit jam hari-dalam-bulan bulan hari-dalam-minggu

Anda mewarisi sebuah crontab dan penuh dengan 0 */2 * * 1-5, 15 4 1 * *, */30 8-18 * * *. Parser ini mengambil ekspresi cron standar 5 bidang dan mengembalikan deskripsi bahasa Inggris sederhana (“every 2 hours on weekdays”) plus 5 waktu berikutnya saat benar-benar akan berjalan. Berguna untuk memahami jadwal lama dan memverifikasi yang baru sebelum men-deploy-nya.

Cara mengurai ekspresi cron

  1. 1

    Tempel ekspresi

    Ekspresi standar 5 bidang (`* * * * *`): menit, jam, hari-dalam-bulan, bulan, dan hari-dalam-minggu.

  2. 2

    Baca deskripsi bahasa Inggris

    Parser menulis ulang tiap bidang dalam bahasa Inggris sederhana, misalnya "At minute 0, every 2 hours, on day(s) of week 1-5."

  3. 3

    Verifikasi dengan pratinjau run berikutnya

    5 waktu jadwal mendatang. Jika tidak sesuai maksud Anda, perbaiki ekspresinya.

  4. 4

    Perbaiki bidang yang tidak valid

    Ekspresi dengan jumlah bidang salah atau nilai di luar rentang ditolak dengan pesan yang menyebut bidang bermasalah.

Menerjemahkan tiap bidang

Setiap bidang punya rentang valid dan karakter spesialnya sendiri:

Bidang Rentang Wildcard yang didukung
Menit 0-59 * , - /
Jam 0-23 * , - /
Hari dalam bulan 1-31 * , - /
Bulan 1-12 * , - /
Hari dalam minggu 0-7 * , - /
  • * = setiap nilai (* di bidang menit berarti setiap menit).
  • 1,5,10 = daftar nilai.
  • 1-5 = rentang nilai.
  • */15 atau 0-45/15 = step, dihitung dari awal rentang bidang.
  • Hari-dalam-minggu 0 dan 7 sama-sama Minggu, jadi kedua konvensi diterima. Nama bulan dan hari seperti JAN atau MON tidak diterima; gunakan angka.

Contoh yang diterjemahkan

Ekspresi Dalam bahasa Inggris
0 */2 * * 1-5 At minute 0 every 2 hours, Monday through Friday
15 4 1 * * At 04:15 on the 1st day of every month
*/30 8-18 * * * Every 30 minutes between 08:00 and 18:59
0 0 1,15 * * At midnight on the 1st and 15th of every month
0 22 * * 0 At 22:00 every Sunday

Apa yang diterima parser

  • Tepat 5 bidang: menit, jam, hari-dalam-bulan, bulan, dan hari-dalam-minggu. Ekspresi Quartz 6 atau 7 bidang (dengan detik atau tahun) ditolak.
  • Rentang valid: setiap nilai harus muat di bidangnya, misalnya menit 0-59, jam 0-23, hari-dalam-bulan 1-31, bulan 1-12, dan hari-dalam-minggu 0-7.
  • Step positif: nilai setelah / harus bilangan positif (*/0 ditolak).
  • Tanpa pintasan bernama: @daily, @reboot, dan pintasan serupa tidak diterima. Perluas dulu ke bentuk 5 bidangnya (misalnya @daily = 0 0 * * *).

Hari-dalam-bulan dan hari-dalam-minggu digabungkan

Jika hari-dalam-bulan dan hari-dalam-minggu sama-sama diatur, parser ini hanya menjadwalkan run saat keduanya cocok: 0 0 1 * MON hanya berjalan saat tanggal 1 jatuh pada Senin. Sebagian besar implementasi cron Linux justru memperlakukan dua bidang itu sebagai OR (job berjalan saat salah satunya cocok). Periksa kembali ekspresi terhadap scheduler yang benar-benar Anda pakai.

Catatan zona waktu

Waktu di pratinjau dihitung dari jam server, yang berjalan di UTC. Jika crontab Anda berjalan di mesin dengan zona waktu lain, waktu yang ditampilkan di sini bisa berbeda dari waktu di mesin itu.

Pertanyaan yang Sering Diajukan

Tidak. Hanya ekspresi standar 5 bidang yang diterima. Ekspresi Quartz dengan detik (6 bidang) atau dengan tahun (7 bidang) ditolak dengan pesan error.

Biasanya salah satu dari ini: pratinjau memakai jam server dalam UTC sementara crontab Anda berjalan di zona waktu lain; hari-dalam-bulan dan hari-dalam-minggu sama-sama diatur (parser ini mensyaratkan keduanya cocok); atau nilai step yang mulai lagi di awal tiap jam/hari.

Ya, jika itu ekspresi standar 5 bidang, yang dipakai Kubernetes (default UTC). Ingat pratinjau di sini memakai jam server dalam UTC: jika cluster berjalan di zona waktu lain, waktunya bisa berbeda.

Cron Linux menerima pintasan bernama: @reboot (saat startup), @yearly / @annually (0 0 1 1 *), @monthly, @weekly, @daily, @hourly. Parser ini tidak menerimanya, jadi perluas dulu pintasan ke ekspresi 5 bidang setara sebelum menempelkannya di sini.

Alat Terkait