| Expression | Description | Category |
|---|---|---|
* * * * * | Every minute | Frequent |
*/2 * * * * | Every 2 minutes | Frequent |
*/5 * * * * | Every 5 minutes | Frequent |
*/10 * * * * | Every 10 minutes | Frequent |
*/15 * * * * | Every 15 minutes | Frequent |
*/30 * * * * | Every 30 minutes | Frequent |
0 * * * * | Every hour (at :00) | Hourly |
30 * * * * | Every hour at :30 | Hourly |
0 */2 * * * | Every 2 hours | Hourly |
0 */4 * * * | Every 4 hours | Hourly |
0 */6 * * * | Every 6 hours | Hourly |
0 */12 * * * | Every 12 hours | Hourly |
0 0 * * * | Every day at midnight | Daily |
0 1 * * * | Every day at 1:00 AM | Daily |
0 6 * * * | Every day at 6:00 AM | Daily |
0 9 * * * | Every day at 9:00 AM | Daily |
0 12 * * * | Every day at noon | Daily |
0 18 * * * | Every day at 6:00 PM | Daily |
0 23 * * * | Every day at 11:00 PM | Daily |
0 0,12 * * * | Twice daily โ midnight and noon | Daily |
0 9 * * 1 | Every Monday at 9:00 AM | Weekly |
0 9 * * 1-5 | Every weekday (MonโFri) at 9:00 AM | Weekly |
0 9 * * MON-FRI | Every weekday at 9 AM (named) | Weekly |
0 0 * * 0 | Every Sunday at midnight | Weekly |
0 0 * * 6,0 | Every Saturday and Sunday at midnight | Weekly |
0 8 * * 1,3,5 | Mon/Wed/Fri at 8:00 AM | Weekly |
0 0 1 * * | 1st of every month at midnight | Monthly |
0 0 15 * * | 15th of every month at midnight | Monthly |
0 0 1,15 * * | 1st and 15th of every month | Monthly |
0 0 L * * | Last day of every month (Quartz/AWS) | Monthly |
0 0 1 */3 * | Every 3 months on the 1st at midnight | Monthly |
0 0 1 1 * | January 1st at midnight (New Year) | Yearly |
0 0 1 1,7 * | January 1st and July 1st at midnight | Yearly |
0 9 * * 1#1 | First Monday of every month at 9 AM (Quartz) | Advanced |
0 0 * * 5L | Last Friday of every month (Quartz) | Advanced |
0/30 9-17 * * MON-FRI | Every 30 min 9 AMโ5 PM on weekdays | Advanced |
5 4 * * sun | 5 min past 4 AM every Sunday | Advanced |
โโโโโโโโโโโโ minute (0โ59) โ โโโโโโโโโโโ hour (0โ23) โ โ โโโโโโโโโโ day of month (1โ31) โ โ โ โโโโโโโโโ month (1โ12 or JANโDEC) โ โ โ โ โโโโโโโโโโ day of week (0โ6, Sun=0 or SUNโSAT) โ โ โ โ โ * * * * * command to execute
| Character | Name | Meaning | Example |
|---|---|---|---|
| * | Wildcard | Any value | * in hour = every hour |
| , | List separator | Multiple values | 1,15 in day = 1st and 15th |
| - | Range | Fromโto inclusive | 1-5 in weekday = MonโFri |
| / | Step | Every N units | */5 in minute = every 5 min |
| ? | No specific value | Ignore field (Quartz/AWS) | ? in day when weekday set |
| L | Last | Last day/weekday | L in day = last day of month |
| W | Weekday | Nearest weekday | 15W = nearest weekday to 15th |
| # | Nth weekday | N-th day in month | 2#1 = 1st Monday |
| Platform | Format | Example |
|---|---|---|
| Linux/macOS crontab | min hr dom mon dow | 0 9 * * 1-5 |
| GitHub Actions | min hr dom mon dow | 0 9 * * 1-5 |
| AWS EventBridge | min hr dom mon dow year | 0 9 ? * MON-FRI * |
| Quartz (Java) | sec min hr dom mon dow [year] | 0 0 9 ? * MON-FRI |
| Kubernetes CronJob | min hr dom mon dow | 0 9 * * 1-5 |
Field menerima sintaks campuran. Untuk menjalankan tugas pada jam 8 pagi dan 6 sore di hari kerja:
0 8,18 * * 1-5
Untuk menargetkan bulan tertentu dengan langkah:
0 0 1 1-12/3 * # Setiap 3 bulan mulai Januari (Jan, Apr, Jul, Okt)
Ketika hari dalam bulan dan hari dalam minggu keduanya diatur (bukan *), perilakunya tergantung pada implementasi. Dalam cron standar, tugas berjalan jika salah satu kondisi terpenuhi โ ini adalah hubungan OR, bukan AND. Ini mengejutkan banyak orang.
0 0 15 * 1
Meskipun bukan ekspresi cron secara teknis, @reboot adalah pintasan yang didukung secara luas:
@reboot /usr/local/bin/start-service.sh
Pintasan umum lainnya:
| Pintasan | Setara |
|---|---|
@yearly | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@weekly | 0 0 * * 0 |
@daily | 0 0 * * * |
@hourly | 0 * * * * |
Yang klasik. Edit crontab pengguna Anda dengan crontab -e:
# Jalankan backup setiap hari jam 2 pagi
0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1
Tugas cron sistem di /etc/cron.d/ menyertakan field pengguna tambahan:
0 2 * * * root /usr/local/bin/cleanup.sh
GitHub Actions menggunakan sintaks lima field yang sama di dalam trigger schedule. Semua waktu adalah UTC.
on:
schedule:
- cron: '0 3 * * 1-5' # Hari kerja jam 3 pagi UTC
Untuk pembahasan mendalam tentang konfigurasi YAML, lihat YAML untuk Kubernetes dan YAML untuk Docker Compose.
Jika tugas memakan waktu lebih lama dari interval antara eksekusi, Anda akan mendapat instansi yang tumpang tindih. Script yang berjalan selama 8 menit pada jadwal */5 * * * * akan menumpuk.
Solusi:
flock di Linux)concurrencyPolicy: Forbid di CronJob Kubernetes0 0 31 * * # Hanya berjalan di bulan dengan 31 hari
Ini berjalan di Januari, Maret, Mei, Juli, Agustus, Oktober, dan Desember โ tetapi diam-diam melewatkan lima bulan lainnya. Jika Anda membutuhkan tugas akhir bulan, pertimbangkan menjalankan pada tanggal 1 dan menyesuaikan logika script Anda, atau gunakan alat yang mendukung semantik "hari terakhir bulan".
Beberapa implementasi cron memerlukan newline di akhir file crontab. Jika entri terakhir Anda tidak dieksekusi, tambahkan baris kosong di akhir.
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-report
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: report
image: reporting:latest
command: ["python", "generate_report.py"]
restartPolicy: OnFailure
Ekspresi cron adalah string dengan 5 atau 6 bidang (menit, jam, hari bulan, bulan, hari minggu, dan opsional detik) untuk menjadwalkan tugas otomatis di sistem Unix.
Tanda asterisk (*) berarti 'setiap'. Misalnya, * di kolom menit berarti 'setiap menit', * di kolom jam berarti 'setiap jam', dan seterusnya untuk setiap jenis kolom.
Cron Unix/Linux standar menggunakan 5 bidang (menit jam hari bulan hari_minggu). Banyak penjadwal modern seperti AWS EventBridge dan Kubernetes CronJobs mendukung 6 bidang dengan bidang detik opsional di awal atau akhir.
Gunakan: 0 9 * * 1-5. Artinya menit=0, jam=9, hari bulan apa pun, bulan apa pun, hari kerja Senin(1) hingga Jumat(5).