Tidak suka iklan? Pergi Bebas Iklan Hari ini

Hentikan Mencari Pola Cron — Ada Generator untuk Itu

Diperbarui pada

Ekspresi Cron adalah salah satu hal yang digunakan secara terus-menerus tetapi jarang diingat. Berikut arti dari lima field yang sebenarnya, kesalahan yang menyerang orang-orang, dan mengapa generator ekspresi Cron online adalah pendekatan yang lebih cerdas.

Berhenti Mencari Sintaks Cron — Ada Generator untuk Ini 1
IKLAN · HAPUS?

Pukul 2 pagi. Sebuah penyebaran (deployment) dijadwalkan pada pukul 6 pagi. Anda perlu memverifikasi kembali bahwa pekerjaan cron akan benar-benar dijalankan pada waktu yang tepat. Jadi Anda membuka tab baru dan mengetikkan "cron syntax" di Google. Kembali lagi.

Ini adalah bagian dari perjalanan. Setiap pengembang yang pernah menyentuh server Linux telah melakukannya setidaknya sekali — dan kebanyakan dari kita telah melakukannya lebih dari sekali yang perlu disadari. Ekspresi cron adalah salah satu hal yang digunakan secara terus-menerus namun tidak pernah benar-benar diingat. Sintaksnya berada di zona yang tidak nyaman antara 'terlalu sederhana untuk dicari' dan 'cukup spesifik untuk salah ketik.'

Ada cara yang lebih baik. Gunakan generator ekspresi cron online dan biarkan alat tersebut menangani sintaksnya sambil Anda fokus pada hal yang benar-benar penting.

Mengapa Sintaks Cron Menolak Dijadikan Hafalan

Cron memiliki lima field. Lima. Itu saja. Namun urutannya selalu membuat orang bingung setiap kali:

# ┌───────────── minute (0–59)
# │ ┌───────────── hour (0–23)
# │ │ ┌───────────── day of month (1–31)
# │ │ │ ┌───────────── month (1–12)
# │ │ │ │ ┌───────────── day of week (0–6, Sunday=0)
# │ │ │ │ │
  * * * * * command

Masalahnya bukan karena sulit — tapi karena hanya cukup banyak karakter khusus untuk menyebabkan ketidakjelasan. Apakah */5 "setiap 5 menit" atau "pada menit ke-5"? Apakah 0 9 * * 1-5 dijalankan pada pukul 9 pagi atau 9 malam? Apa yang terjadi jika Anda lupa bahwa bulan dimulai dari indeks 1 tapi hari dalam seminggu dimulai dari 0?

Ini bukan trik untuk pemula. Ini adalah trik untuk semua orang. Konfigurasi cron yang salah adalah salah satu cara yang tenang untuk menyebabkan kejadian produksi — jenis kejadian di mana tidak ada yang langsung crash, hanya tidak berjalan, dan Anda baru menyadari tiga hari kemudian.

Lima Field, Dijelaskan Tanpa Kebosanan

Berikut versi praktisnya:

  • Menit (0–59) — Menit dalam satu jam ketika pekerjaan dijalankan. 30 berarti pukul 30. */15 berarti setiap 15 menit.
  • Jam (0–23) — Menggunakan waktu 24 jam. 9 berarti pukul 9 pagi. 17 berarti pukul 5 sore. Tidak ada perbedaan antara AM/PM.
  • Hari dalam bulan (1–31) — Hari kalender yang dimaksud. 1 berarti hari pertama bulan. 15 berarti hari ke-15.
  • Bulan (1–12) — Januari adalah 1, Desember adalah 12. Anda juga bisa menggunakan nama-nama: JAN, FEB, dsb.
  • Hari dalam seminggu (0–6 atau 1–7) — Minggu bisa diwakili dengan 0 atau 7 tergantung implementasi cron yang digunakan. Senin selalu diwakili dengan 1. Ini adalah field yang paling menyebabkan kebingungan.

Karater Khusus yang Penting

  • * — Setiap nilai yang mungkin (setiap menit, setiap jam, dsb.)
  • */n — Setiap Tidak ada tulisan untuk diterjemahkan dalam tag ini.interval. */5 dalam field menit berarti setiap 5 menit.
  • a-b — Rentang. 1-5 dalam field hari seminggu berarti Senin hingga Jumat.
  • a,b,c — Daftar. 1,3,5 berarti Senin, Rabu, Jumat.
  • @reboot, @hourly, @daily — Alias singkat. Tidak didukung di semua tempat.

Kesalahan Umum yang Menyerang Orang

1. Lupa tentang zona waktu

Cron berjalan dalam zona waktu lokal server. Jika server Anda berada di UTC dan Anda berada di New York, 0 9 * * * tidak berjalan pada pukul 9 pagi di Amerika Utara — ia berjalan pada pukul 4 atau 5 pagi, tergantung pada perubahan zona waktu (DST). Selalu ketahui zona waktu server Anda. Selalu.

2. Menggunakan Hari dalam Bulan dan Hari dalam Seminggu Secara Bersamaan

Jika Anda menentukan nilai pada field hari dalam bulan dan dan hari dalam seminggu (bukan * dalam salah satu dari keduanya), kebanyakan implementasi cron akan menganggapnya sebagai OR — pekerjaan berjalan ketika salah satu kondisi terpenuhi. Ini hampir tidak pernah sesuai dengan kebutuhan Anda.

3. Mengharapkan */1 Berarti "Sekali"

*/1 sama dengan *. Ini berarti "setiap kali". Tidak ada cara untuk menyatakan "dijalankan sekali" dalam cron standar — untuk itu, Anda perlu menggunakan at atau timer systemd satu kali.

4. Tidak Menguji Sebelum Deploy

Cron tidak memberikan umpan balik langsung. Anda menulis ekspresi, menyimpan crontab, dan kemudian menunggu. Jika salah, Anda hanya menyadari kesalahan ketika pukul 3 pagi ketika backup yang dijadwalkan tidak berjalan. Itu sebabnya menggunakan kalkulator waktu berikutnya cron sebelum deploy sangat bernilai, meskipun hanya memakan 30 detik.

Gunakan Generator Ekspresi Cron Sebagai Pengganti

Saran yang jujur: berhenti mencoba menulis ekspresi cron secara manual dari ingatan. Gunakan generator. Ini bukan tanda kelemahan — ini cara untuk menghindari kesalahan bodoh di produksi.

Itu generator ekspresi cron di IOTools mengizinkan Anda membangun ekspresi secara visual — pilih interval menit, jam, hari seminggu, dan ia akan menunjukkan ekspresi yang tepat serta penjelasan sederhana tentang kapan ekspresi tersebut berjalan. Tidak perlu menghafal, tidak perlu membuka dokumen.

Setelah Anda memiliki ekspresi, jalankan melalui kalkulator waktu berikutnya cron. Salin ekspresi tersebut, dapatkan 5–10 waktu eksekusi berikutnya. Ini hanya butuh lima detik dan akan langsung menginformasikan apakah Anda secara tidak sengaja menjadwalkan pekerjaan pembersihan agar berjalan setiap menit alih-alih sekali per hari.

Pemeriksaan kedua ini yang paling sering dilewatkan. Jangan lewatkan.

Referensi Cepat: Ekspresi yang Paling Umum Digunakan

EkspresiArti
* * * * *Setiap menit
0 * * * *Setiap jam, pada pukul jam
0 9 * * *Setiap hari pukul 9:00 pagi
0 9 * * 1-5Hari kerja pukul 9:00 pagi
*/15 * * * *Setiap 15 menit
0 0 * * 0Setiap hari Minggu pukul tengah malam
0 0 1 * *Pukul tengah malam pada hari pertama setiap bulan
30 4 1,15 * *Pukul 4:30 pagi pada tanggal 1 dan 15 bulan
0 22 * * 1-5Hari kerja pukul 22:00 malam
@dailySekali per hari pukul tengah malam (singkat)
Ingin bebas iklan? Bebas Iklan Hari Ini

Instal Ekstensi Kami

Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat

Ke Ekstensi Chrome Ke Ekstensi Tepi Ke Ekstensi Firefox Ke Ekstensi Opera

Papan Skor Telah Tiba!

Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!

IKLAN · HAPUS?
IKLAN · HAPUS?
IKLAN · HAPUS?

Pojok Berita dengan Sorotan Teknologi

Terlibat

Bantu kami untuk terus menyediakan alat gratis yang berharga

Belikan aku kopi
IKLAN · HAPUS?