Cron Expression Generator
Hasilkan ekspresi cron secara visual dengan pembangun langkah demi langkah
Preset cepat
Menit
Jam
Hari dalam bulan
Bulan
Hari dalam minggu
Ekspresi cron
0 9 * * *minute hour day(month) month day(week)
Apa Itu Cron Expression Generator?
Cron expression generator adalah alat yang membangun string jadwal cron melalui antarmuka visual, tanpa mengharuskan Anda menulisnya secara manual. Cron expression adalah string dengan lima field (menit, jam, hari dalam bulan, bulan, hari dalam minggu) yang mendefinisikan kapan tugas berulang harus dijalankan. Format ini berasal dari daemon cron Unix asli tahun 1979 dan kini digunakan di crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler, serta puluhan pustaka penjadwalan job.
Menulis cron expression dari ingatan adalah sumber bug yang umum. Kelima field saling berinteraksi dengan cara yang tidak langsung terlihat: nilai step seperti */15 pada field menit menghasilkan eksekusi di menit 0, 15, 30, dan 45, sementara 5/15 dimulai dari menit 5 dan menghasilkan 5, 20, 35, 50. Menggabungkan hari-dalam-bulan dan hari-dalam-minggu dengan nilai non-wildcard menciptakan kondisi OR, bukan AND, yang kerap mengejutkan engineer berpengalaman sekalipun. Generator visual menghilangkan ambiguitas ini dengan memungkinkan Anda memilih jadwal yang diinginkan dan menghasilkan sintaks yang benar secara otomatis.
Cron generator berbeda dari cron parser. Parser mengambil expression yang sudah ada dan menjelaskannya dalam bahasa yang mudah dipahami. Generator bekerja sebaliknya: Anda mendeskripsikan jadwal yang dibutuhkan, lalu alat menghasilkan cron string yang sesuai. Gunakan generator saat membuat job terjadwal baru; gunakan parser saat mengaudit atau mendebug yang sudah ada.
Mengapa Menggunakan Cron Generator Ini?
Membuat cron expression secara manual berarti menghafal urutan field, rentang nilai, dan aturan operator. Satu field yang salah tempat dapat mengubah job harian menjadi job yang berjalan setiap menit. Generator ini memungkinkan Anda memilih jadwal secara visual dan menyalin hasilnya hanya dengan satu klik.
Kasus Penggunaan Cron Generator
Preset Jadwal Cron yang Umum
Tabel di bawah ini mencantumkan cron expression untuk jadwal yang paling sering digunakan. Sebagian besar job produksi mengikuti salah satu pola ini. Ubah field individual sesuai kebutuhan waktu Anda.
| Jadwal | Expression | Penggunaan umum |
|---|---|---|
| Every minute | * * * * * | Health checks, queue polling |
| Every 5 minutes | */5 * * * * | Metrics collection, cache refresh |
| Every 15 minutes | */15 * * * * | API sync, dashboard updates |
| Every hour | 0 * * * * | Log rotation, report generation |
| Every 6 hours | 0 */6 * * * | Database backups, digest emails |
| Daily at midnight | 0 0 * * * | Nightly batch jobs, cleanup scripts |
| Daily at 9 AM | 0 9 * * * | Daily reports, notification digests |
| Weekdays at 9 AM | 0 9 * * 1-5 | Business-hours tasks, standup reminders |
| Every Monday at midnight | 0 0 * * 1 | Weekly reports, dependency updates |
| First of every month | 0 0 1 * * | Billing runs, monthly aggregation |
| Every Sunday at 2:30 AM | 30 2 * * 0 | Full backups during low-traffic window |
| January 1st at midnight | 0 0 1 1 * | Annual reports, license renewals |
Komponen Penyusun Cron Expression
Setiap cron expression memiliki tepat lima field, dibaca dari kiri ke kanan. Setiap field menerima nilai dan operator tertentu. Memahami aturan ini sudah cukup untuk menulis jadwal apa pun yang Anda temui di produksi.
Empat operator mengontrol cara nilai dicocokkan dalam setiap field. Anda dapat menggabungkannya: 1-5/2 pada field hari-dalam-minggu berarti Senin, Rabu, Jumat (rentang 1-5, langkah 2).
| Operator | Sintaks | Contoh | Menghasilkan |
|---|---|---|---|
| Wildcard | * | * (minute) | Every minute |
| List | a,b,c | 1,15 (day) | 1st and 15th |
| Range | a-b | 9-17 (hour) | 9 AM through 5 PM |
| Step | */n | */10 (minute) | Every 10 minutes |
| Range+Step | a-b/n | 10-30/5 (min) | 10, 15, 20, 25, 30 |
Contoh Kode
Cara membuat dan mendaftarkan jadwal cron di Node.js, Python, Go, dan bash:
import { CronJob } from 'cron';
// Build a cron expression: every weekday at 9:00 AM
const expression = '0 9 * * 1-5';
const job = new CronJob(expression, () => {
console.log('Running weekday morning task');
});
job.start();
// Programmatic expression building
function buildCron({ minute = '*', hour = '*', dom = '*', month = '*', dow = '*' }) {
return `${minute} ${hour} ${dom} ${month} ${dow}`;
}
const expr = buildCron({ minute: '0', hour: '*/6', dow: '1-5' });
console.log(expr); // โ "0 */6 * * 1-5"from crontab import CronTab
# Create a new cron job for the current user
cron = CronTab(user=True)
# Build a job: run backup.py every day at 2:30 AM
job = cron.new(command='python3 /home/user/backup.py')
job.setall('30 2 * * *')
print(job) # โ 30 2 * * * python3 /home/user/backup.py
print(job.is_valid()) # โ True
# Schedule every 15 minutes on weekdays
job2 = cron.new(command='/usr/bin/sync-data')
job2.minute.every(15)
job2.dow.during('MON', 'FRI')
cron.write() # Save to user's crontab
# Verify next run time
from croniter import croniter
from datetime import datetime
it = croniter('30 2 * * *', datetime.now())
print(it.get_next(datetime)) # โ next 2:30 AM timestamppackage main
import (
"fmt"
"strings"
"github.com/robfig/cron/v3"
)
// BuildCron constructs a 5-field cron expression from parts
func BuildCron(minute, hour, dom, month, dow string) string {
fields := []string{minute, hour, dom, month, dow}
return strings.Join(fields, " ")
}
func main() {
// Generate: every weekday at 9 AM
expr := BuildCron("0", "9", "*", "*", "1-5")
fmt.Println(expr) // โ 0 9 * * 1-5
// Validate and schedule it
c := cron.New()
_, err := c.AddFunc(expr, func() {
fmt.Println("Running scheduled task")
})
if err != nil {
fmt.Printf("Invalid expression: %v\n", err)
return
}
c.Start()
}# Open the crontab editor to add a new job crontab -e # Add a cron job without opening an editor: # Run cleanup.sh every Sunday at 3 AM (crontab -l 2>/dev/null; echo "0 3 * * 0 /home/user/cleanup.sh") | crontab - # Generate and add a job: every 10 minutes, log disk usage EXPR="*/10 * * * *" CMD="df -h >> /var/log/disk-usage.log" (crontab -l 2>/dev/null; echo "$EXPR $CMD") | crontab - # Verify the job was added crontab -l | tail -1 # โ */10 * * * * df -h >> /var/log/disk-usage.log # Remove all cron jobs (use with caution) # crontab -r