Generator Ekspresi Cron
Susun ekspresi cron per kolom, baca artinya dalam kata-kata, lihat jadwal berikutnya di zona waktu apa pun, dan konversi ke systemd, Quartz, atau AWS.
Dalam kata-kata
Tanggal dan hari dalam minggu sama-sama diatur: cron klasik berjalan jika SALAH SATU cocok (bukan keduanya).
Penyusun
| Kolom | Mode | Nilai |
|---|---|---|
| Detik0–59 | ||
| Menit0–59 | ||
| Jam0–23 | ||
| Tanggal1–31, L | ||
| Bulan1–12 atau JAN–DEC | ||
| Hari dalam minggu0–7 (0 dan 7 = Minggu) atau SUN–SAT |
Jadwal berikutnya
Format lain
- baris crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Cara membuat ekspresi cron
- Ketik atau tempel ekspresi di Ekspresi cron, atau pilih salah satu dari Preset. Makro seperti
@dailyatau@weeklyjuga diterima. - Atau gunakan Penyusun: untuk setiap kolom, pilih Mode (Setiap, Setiap N, Nilai tertentu, Rentang, atau Kustom) lalu isi Nilai. Ekspresinya diperbarui seiring Anda mengisi, dan mengedit ekspresi juga memperbarui penyusun.
- Centang Tambahkan kolom detik (6 kolom) jika penjadwal Anda mendukung detik.
- Baca jadwalnya di bagian Dalam kata-kata (dalam bahasa Indonesia), lalu periksa daftar Jadwal berikutnya. Pilih Zona waktu server yang menjalankan job dan Berapa banyak jadwal yang ingin ditampilkan.
- Salin ekspresinya dengan Salin, atau gunakan salah satu dari Format lain.
Kesalahan dijelaskan per kolom, misalnya “Menit: 61 di luar rentang (0–59)”, sehingga Anda tahu persis apa yang harus diperbaiki.
Lima kolom cron
Baris cron standar (Vixie) punya lima kolom, lalu perintahnya:
| Kolom | Nilai yang diizinkan |
|---|---|
| Menit | 0–59 |
| Jam | 0–23 |
| Tanggal | 1–31 |
| Bulan | 1–12 atau JAN–DEC |
| Hari dalam minggu | 0–7 (0 dan 7 adalah Minggu) atau SUN–SAT |
Setiap kolom menerima * (setiap nilai), daftar 1,15, rentang 9-17, langkah */15 (setiap 15 satuan), atau rentang dengan langkah 0-30/10. Jadi */15 9-17 * * 1-5 berarti setiap 15 menit dari pukul 09.00 hingga 17.45, Senin sampai Jumat.
Ada satu aturan yang mengejutkan banyak orang: jika Tanggal dan Hari dalam minggu sama-sama dibatasi, cron klasik berjalan jika salah satunya cocok. 0 0 13 * 5 berjalan setiap tanggal 13 dan setiap hari Jumat, bukan hanya pada Jumat tanggal 13. Alat ini menampilkan peringatan dalam kasus tersebut.
Jadwal berikutnya dan zona waktu
Cron memakai jam mesin, atau pengaturan CRON_TZ/TZ di crontab. Daftar Jadwal berikutnya dihitung untuk zona waktu yang Anda pilih, termasuk perubahan daylight saving time: saat perubahan di musim semi, job yang diatur pukul 02.30 bisa terlewat, dan di musim gugur job bisa berjalan sekali atau dua kali tergantung implementasinya. Zona waktu Indonesia (WIB, WITA, WIT) tidak memakai daylight saving time, tetapi server di luar negeri bisa saja memakainya. Untuk job yang harus berjalan tepat sekali, pilih waktu di luar 01.00–03.00 atau gunakan UTC.
Vixie cron, systemd timer, Quartz, dan AWS
- systemd timer memakai
OnCalendar=dengan sintaks berbeda:Mon..Fri *-*-* 09..17:00/15:00. Kondisi hari dan tanggal digabung dengan AND, bukan OR, sehingga sebagian ekspresi cron tidak punya padanan yang persis. - Quartz dan Spring menaruh kolom detik di depan dan bisa menambahkan kolom tahun. Salah satu dari dua kolom hari harus
?, dan Quartz menomori hari 1–7 mulai dari Minggu, berbeda dengan 0–6 di cron. Alat ini menulis hari sebagai nama (MON-FRI) untuk menghindari jebakan itu. - AWS EventBridge memakai
cron(minutes hours day month weekday year): enam kolom, tanpa detik,?di salah satu kolom hari, dan tahun di akhir.
Cron standar tidak punya kolom detik. Bentuk 6 kolom dengan detik didukung oleh banyak pustaka (node-cron, Spring, Quartz), tetapi tidak oleh crontab sistem.
Pertanyaan yang sering diajukan
Bagaimana cara menjalankan job setiap 5 menit?
Gunakan */5 * * * *. Job berjalan pada menit 0, 5, 10… setiap jam.
Bagaimana cara menjalankan job pada hari terakhir setiap bulan?
Banyak penjadwal menerima L di kolom tanggal: 0 18 L * *. Dengan Vixie cron biasa, jalankan setiap hari pada tanggal 28–31 dan periksa di dalam skrip apakah besok tanggal 1.
Apa fungsi @reboot?
Perintah dijalankan sekali, saat daemon cron dimulai. Tidak ada jadwalnya, sehingga alat ini tidak bisa menampilkan waktu jalannya.
Mengapa job saya tidak berjalan pada waktu yang ditampilkan?
Periksa zona waktu server, crontab pengguna dibandingkan /etc/crontab (yang punya kolom pengguna tambahan), dan PATH: cron dimulai dengan environment yang minimal.
Minggu itu 0 atau 7?
Keduanya. Di kolom hari dalam minggu, 0 dan 7 berarti Minggu, 1 adalah Senin, dan 6 adalah Sabtu.
Alat terkait
- Konverter Unix Timestamp Konversi Unix timestamp dalam detik atau milidetik ke tanggal yang mudah dibaca dalam waktu lokal, UTC, dan ISO 8601, lalu ubah tanggal kembali ke epoch.
- Konverter Zona Waktu Konversi tanggal dan jam dari satu zona waktu ke beberapa zona lain sekaligus, dengan waktu musim panas diperhitungkan otomatis. Cari zona IANA atau kota.
- Kalkulator Chmod Konversi izin file Unix antara kotak centang, notasi oktal (755) dan simbolik (rwxr-xr-x), dengan setuid, setgid, sticky bit, dan perintah chmod siap pakai.