Cron İfadesi Oluşturucu
Adım adım bir oluşturucu ile cron ifadelerini görsel olarak oluştur
Hızlı hazır ayarlar
Dakika
Saat
Ayın günü
Ay
Haftanın günü
Cron ifadesi
0 9 * * *minute hour day(month) month day(week)
Cron İfadesi Oluşturucu Nedir?
Cron ifadesi oluşturucu, cron zamanlama dizelerini elle yazmak yerine görsel bir arayüz aracılığıyla oluşturan bir araçtır. Cron ifadeleri; bir tekrarlayan görevin ne zaman çalışacağını tanımlayan beş alanlı dizelerdir (dakika, saat, ayın günü, ay, haftanın günü). Format, 1979'daki orijinal Unix cron daemon'ına dayanır ve artık crontab, Kubernetes CronJob'ları, GitHub Actions, AWS EventBridge, Google Cloud Scheduler ve düzinelerce iş zamanlama kütüphanesinde kullanılmaktadır.
Cron ifadelerini bellekten yazmak yaygın bir hata kaynağıdır. Beş alan beklenmedik biçimlerde etkileşime girer: dakika alanındaki */15 adım değeri 0, 15, 30 ve 45'te çalışmalar üretirken 5/15, dakika 5'ten başlayarak 5, 20, 35, 50 değerlerini üretir. Joker karakter olmayan değerlerle ayın-günü ve haftanın-günü alanlarını birlikte kullanmak AND değil OR koşulu oluşturur; bu durum deneyimli mühendisleri bile şaşırtır. Görsel bir oluşturucu, istediğiniz zamanlamayı seçmenize ve doğru sözdizimini otomatik olarak üretmesine izin vererek bu belirsizliği ortadan kaldırır.
Cron oluşturucu, cron ayrıştırıcıdan farklıdır. Ayrıştırıcı mevcut bir ifadeyi alır ve düz metinle açıklar. Oluşturucu bunun tersine çalışır: ihtiyacınız olan zamanlamayı tanımlarsınız, araç eşleşen cron dizesini çıktı olarak verir. Yeni bir zamanlanmış iş oluştururken oluşturucuyu; mevcut işleri denetlerken veya hata ayıklarken ayrıştırıcıyı kullanın.
Bu Cron Oluşturucuyu Neden Kullanmalısınız?
Elle cron ifadesi oluşturmak, alan sırasını, değer aralıklarını ve operatör kurallarını ezberlemeyi gerektirir. Tek bir yanlış yerleştirilen alan, günlük çalışan bir işi her dakika çalışacak hale getirir. Bu oluşturucu, zamanlamanızı görsel olarak seçmenize ve sonucu tek tıklamayla kopyalamanıza olanak tanır.
Cron Oluşturucu Kullanım Senaryoları
Yaygın Cron Zamanlama Hazır Ayarları
Aşağıdaki tablo, en sık kullanılan zamanlamalar için cron ifadelerini listeler. Üretim işlerinin büyük çoğunluğu bu kalıplardan birine girer. Gerçek zamanlamanıza uyacak şekilde tek tek alanları değiştirin.
| Zamanlama | İfade | Tipik kullanım |
|---|---|---|
| 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 |
Cron İfadesi Yapı Taşları
Her cron ifadesinin tam olarak soldan sağa okunacak beş alanı vardır. Her alan belirli değerleri ve operatörleri kabul eder. Bu kuralları bilmek, üretimde karşılaşacağınız her zamanlamayı yazmanız için yeterlidir.
Dört operatör, her alan içindeki değerlerin nasıl eşleştirileceğini kontrol eder. Bunları birleştirebilirsiniz: haftanın-günü alanındaki 1-5/2, Pazartesi, Çarşamba, Cuma anlamına gelir (1-5 aralığı, 2 adımı).
| Operatör | Sözdizimi | Örnek | Üretir |
|---|---|---|---|
| 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 |
Kod Örnekleri
Node.js, Python, Go ve bash'te cron zamanlamalarını oluşturma ve kaydetme:
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