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.

๐Ÿ–ฑ๏ธ
Pembangun Jadwal Visual
Pilih nilai menit, jam, hari, bulan, dan hari kerja dari dropdown dan toggle. Cron expression diperbarui secara real time saat Anda mengubah setiap field. Tidak perlu menghafal sintaks.
๐Ÿ”’
Pemrosesan Mengutamakan Privasi
Seluruh proses pembuatan berjalan di browser Anda. Tidak ada data jadwal yang dikirim ke server. Cron expression dan konfigurasi job Anda tetap berada di perangkat Anda.
โšก
Output Instan dengan Pratinjau
Lihat cron expression yang dihasilkan beserta pratinjau waktu eksekusi berikutnya saat Anda membangunnya. Verifikasi jadwal sudah benar sebelum menyalinnya ke konfigurasi Anda.
๐Ÿ“‹
Tanpa Akun
Buka halaman dan mulai membangun. Tidak perlu login, API key, maupun instalasi. Bekerja di perangkat apa pun dengan browser modern, termasuk perangkat seluler.

Kasus Penggunaan Cron Generator

Frontend Developer
Buat cron expression untuk panel admin dan antarmuka penjadwalan. Hasilkan sintaks yang benar untuk pemilih jadwal yang menghadap pengguna dan menyimpan cron string di basis data.
Backend Engineer
Buat cron expression untuk antrean tugas seperti Celery, Sidekiq, dan Bull. Hasilkan string jadwal, verifikasi waktu eksekusi berikutnya, lalu tempelkan ke konfigurasi job Anda.
DevOps / SRE
Hasilkan jadwal cron untuk Kubernetes CronJobs, pipeline CI/CD, dan otomasi infrastruktur. Buat expression untuk jendela backup, pembaruan sertifikat, dan rotasi log tanpa kesalahan sintaks.
QA Engineer
Buat cron expression pengujian yang dipicu pada interval tertentu untuk pengujian integrasi. Hasilkan jadwal dengan waktu eksekusi yang dapat diprediksi guna memvalidasi perilaku scheduler.
Data Engineer
Buat cron expression untuk pemicu pipeline ETL dan jadwal sinkronisasi data. Hasilkan jadwal yang tidak tumpang tindih untuk tahap ekstraksi, transformasi, dan pemuatan dengan pengaturan waktu yang tepat.
Pelajar / Pemula
Pelajari sintaks cron dengan bereksperimen menggunakan pembangun visual. Ubah setiap field satu per satu dan lihat bagaimana expression serta waktu eksekusi berikutnya berubah. Bangun intuisi untuk wildcard, range, dan nilai step.

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.

JadwalExpressionPenggunaan umum
Every minute* * * * *Health checks, queue polling
Every 5 minutes*/5 * * * *Metrics collection, cache refresh
Every 15 minutes*/15 * * * *API sync, dashboard updates
Every hour0 * * * *Log rotation, report generation
Every 6 hours0 */6 * * *Database backups, digest emails
Daily at midnight0 0 * * *Nightly batch jobs, cleanup scripts
Daily at 9 AM0 9 * * *Daily reports, notification digests
Weekdays at 9 AM0 9 * * 1-5Business-hours tasks, standup reminders
Every Monday at midnight0 0 * * 1Weekly reports, dependency updates
First of every month0 0 1 * *Billing runs, monthly aggregation
Every Sunday at 2:30 AM30 2 * * 0Full backups during low-traffic window
January 1st at midnight0 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.

Tata letak lima field cron expression:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

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).

OperatorSintaksContohMenghasilkan
Wildcard** (minute)Every minute
Lista,b,c1,15 (day)1st and 15th
Rangea-b9-17 (hour)9 AM through 5 PM
Step*/n*/10 (minute)Every 10 minutes
Range+Stepa-b/n10-30/5 (min)10, 15, 20, 25, 30

Contoh Kode

Cara membuat dan mendaftarkan jadwal cron di Node.js, Python, Go, dan bash:

JavaScript (Node.js)
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"
Python
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 timestamp
Go
package 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()
}
Bash (crontab)
# 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

Pertanyaan yang Sering Diajukan

Apa urutan field yang benar dalam cron expression?
Urutan lima field standar adalah: menit (0-59), jam (0-23), hari dalam bulan (1-31), bulan (1-12), hari dalam minggu (0-6, di mana 0 adalah Minggu). Urutan ini didefinisikan oleh POSIX dan digunakan oleh crontab, Kubernetes, GitHub Actions, dan sebagian besar pustaka cron. Beberapa alat seperti Quartz Scheduler menambahkan field detik di awal sehingga menjadi enam field, tetapi tata letak lima field adalah standar universal.
Bagaimana cara membuat cron expression untuk 'setiap N menit'?
Gunakan operator step pada field menit: */N. Untuk setiap 5 menit, tulis */5 * * * *. Untuk setiap 15 menit, tulis */15 * * * *. Operator step membagi rentang field secara merata. Perhatikan bahwa */7 tidak menghasilkan eksekusi setiap 7 menit melewati batas jam; ia menghasilkan eksekusi di menit 0, 7, 14, 21, 28, 35, 42, 49, 56, lalu direset ke 0 pada jam berikutnya.
Bisakah saya membuat cron expression yang berjalan pada hari terakhir setiap bulan?
Cron POSIX standar tidak memiliki operator 'hari terakhir dalam bulan'. Anda tidak bisa menulis 0 0 L * * di crontab atau Kubernetes CronJobs. Solusi alternatif termasuk menjadwalkan untuk tanggal 28-31 dan menambahkan pemeriksaan shell ([ $(date +%d -d tomorrow) -eq 01 ]), atau menggunakan implementasi cron yang diperluas seperti Quartz yang mendukung modifier L. AWS EventBridge rate expression juga dapat menargetkan hari terakhir secara langsung.
Apa perbedaan antara cron generator dan cron parser?
Cron generator mengambil kebutuhan penjadwalan Anda (misalnya, 'setiap hari kerja pukul 09.00') dan menghasilkan cron expression yang benar (0 9 * * 1-5). Cron parser bekerja sebaliknya: ia mengambil expression yang sudah ada dan menghasilkan deskripsi yang mudah dibaca. Gunakan generator saat membuat jadwal baru. Gunakan parser saat meninjau atau mendebug jadwal yang sudah ada.
Bagaimana cara menghindari cron job yang tumpang tindih?
Cron sendiri tidak mencegah eksekusi yang tumpang tindih. Jika job yang dijadwalkan setiap menit membutuhkan 90 detik, dua instance akan tumpang tindih. Untuk mencegah ini, gunakan lock file (flock di bash), distributed lock (Redis, etcd), atau kebijakan konkurensi bawaan scheduler Anda. Kubernetes CronJobs memiliki field concurrencyPolicy yang dapat diatur ke Forbid atau Replace. Di scheduler tingkat aplikasi seperti Celery, gunakan solo pool atau lock di tingkat tugas.
Apakah 0 atau 1 yang merupakan hari pertama dalam minggu pada cron?
Dalam cron POSIX, 0 adalah Minggu dan 6 adalah Sabtu. Baik 0 maupun 7 mewakili Minggu di sebagian besar implementasi. Quartz Scheduler menggunakan konvensi berbeda di mana 1 adalah Minggu dan 7 adalah Sabtu. Jika sistem Anda mendukung nama hari (SUN, MON, TUE), gunakan nama tersebut daripada angka untuk menghindari kebingungan lintas platform.
Bagaimana cara membuat cron expression untuk zona waktu tertentu?
crontab tradisional menggunakan zona waktu lokal sistem. Anda dapat mengatur variabel TZ di file crontab (TZ=America/New_York) pada beberapa sistem. Kubernetes CronJobs mendukung field .spec.timeZone sejak versi 1.25. AWS EventBridge dan Google Cloud Scheduler memungkinkan Anda menentukan zona waktu per jadwal. Selalu dokumentasikan zona waktu yang diharapkan di samping cron expression dalam konfigurasi Anda.