Cron İfadesi Ayrıştırıcı
Cron ifadelerini okunabilir açıklamalara dönüştürün ve sonraki çalışma zamanlarını önizleyin
Cron ifadesi
minute hour day(month) month day(week)
Okunabilir açıklama
At 9:00 AM, Mon, Tue, Wed, Thu, Fri
Alan dökümü
Minute
0
0–59
Hour
9
0–23
Day (month)
*
1–31
Month
*
1–12
Day (week)
1-5
0–6
Sonraki 10 zamanlanmış çalışma
Cron İfadesi Ayrıştırma Nedir?
Cron ifadesi, tekrarlayan bir zamanlama tanımlayan ve boşluklarla ayrılmış beş alandan oluşan bir dizedir. Format, 1979'da Ken Thompson tarafından Version 7 Unix için ilk kez yazılan Unix cron daemon'ından doğmuştur. Her alan bir zaman birimini temsil eder: dakika, saat, ayın günü, ay ve haftanın günü. Bir cron ifadesini ayrıştırmak, bu kompakt gösterimi okunabilir bir açıklamaya ve yaklaşan yürütme zamanlarının somut bir listesine dönüştürmek anlamına gelir.
Standart beş alanlı format; Linux ve macOS üzerinde crontab tarafından, GitHub Actions ve GitLab CI gibi CI/CD platformları tarafından, AWS (EventBridge), Google Cloud Scheduler ve Azure Functions gibi bulut zamanlayıcıları tarafından ve her büyük programlama dilindeki iş zamanlama kütüphaneleri tarafından kullanılmaktadır. Bazı sistemler saniye alanı veya yıl alanı ekleyerek formatı altı ya da yedi alana genişletir; ancak POSIX tarafından tanımlanan beş alanlı düzen, tüm uygulamaların paylaştığı temel olmaya devam eder.
Cron ifadelerini elle ayrıştırmak hataya açıktır. Alanlar arasındaki etkileşim beklenmedik zamanlamalar yaratır: 0 9 1-7 * 1, 'ilk haftadaki her Pazartesi' anlamına gelmez; 'her ayın 1'i ile 7'si arasında VEYA herhangi bir Pazartesi' anlamına gelir. Bir cron ayrıştırıcı, her alanı genişleterek, kombinasyon kurallarını uygulayarak ve işin çalışacağı gerçek zaman damgalarını üreterek bu belirsizliği ortadan kaldırır.
Bu Cron Ayrıştırıcıyı Neden Kullanmalısınız?
Bir yapılandırma dosyasından 30 */6 1,15 * * gibi bir cron ifadesini okuyup tam olarak ne zaman çalışacağını bilmek, beş alan üzerinde zihinsel hesaplama gerektirir. Bu ayrıştırıcı bu işi anında yapar.
Cron Ayrıştırıcı Kullanım Senaryoları
Cron İfadesi Sözdizimi Referansı
Standart bir cron ifadesinde boşlukla ayrılmış beş alan bulunur. Her alan tam sayıları, joker karakterleri, aralıkları, listeleri ve adım değerlerini kabul eder. Aşağıdaki tablo her alan için izin verilen aralığı ve operatörleri gösterir.
| Alan | Aralık | Operatörler | Açıklama |
|---|---|---|---|
| Minute | 0–59 | * , - / | Minute within the hour |
| Hour | 0–23 | * , - / | Hour of the day (24-hour) |
| Day (month) | 1–31 | * , - / | Day of the month |
| Month | 1–12 | * , - / | Month of the year (or JAN–DEC) |
| Day (week) | 0–6 | * , - / | Day of the week (0 = Sunday, or SUN–SAT) |
Dört özel karakter, her alan içindeki değerlerin nasıl eşleştirileceğini kontrol eder:
| Karakter | Ad | Davranış |
|---|---|---|
| * | Wildcard | Matches every possible value in the field. * in the minute field means "every minute." |
| , | List | Separates individual values. 1,15 in the day field means "the 1st and 15th." |
| - | Range | Defines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday." |
| / | Step | Defines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50." |
İşte çoğu zamanlama ihtiyacını karşılayan yaygın cron ifadeleri:
| İfade | Zamanlama |
|---|---|
| * * * * * | Every minute |
| 0 * * * * | Every hour (at minute 0) |
| */15 * * * * | Every 15 minutes |
| 0 9 * * * | Every day at 9:00 AM |
| 0 9 * * 1-5 | Weekdays at 9:00 AM |
| 30 2 * * 0 | Every Sunday at 2:30 AM |
| 0 0 1 * * | First day of every month at midnight |
| 0 0 * * 1 | Every Monday at midnight |
| 0 0 1 1 * | January 1st at midnight (yearly) |
| 0 */6 * * * | Every 6 hours |
| 5,35 * * * * | At minute 5 and 35 of every hour |
| 0 9-17 * * 1-5 | Every hour from 9 AM to 5 PM, weekdays |
Kod Örnekleri
Popüler dillerde cron ifadelerini ayrıştırma ve sonraki çalışma zamanlarını hesaplama:
import cronstrue from 'cronstrue';
// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// → "At 09:00 AM, Monday through Friday"
cronstrue.toString('*/15 * * * *');
// → "Every 15 minutes"
// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';
const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// → next Sunday at 02:30 UTC
// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
console.log(interval.next().toString());
}from crontab import CronTab
from croniter import croniter
from datetime import datetime
# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# → seconds until next run
# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
print(cron_iter.get_next(datetime))
# → next 5 weekday 09:00 timestamps
# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# → True (minute 30 is divisible by 15)package main
import (
"fmt"
"time"
"github.com/robfig/cron/v3"
)
func main() {
// Parse a standard 5-field cron expression
parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
schedule, err := parser.Parse("0 9 * * 1-5")
if err != nil {
panic(err)
}
// Calculate the next 5 run times
now := time.Now()
for i := 0; i < 5; i++ {
now = schedule.Next(now)
fmt.Println(now)
}
// → next 5 weekday 09:00 timestamps
}# List current user's cron jobs crontab -l # Edit cron jobs interactively crontab -e # Add a job: run backup.sh every day at 2:30 AM # (append to crontab via pipe) (crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab - # Check syntax with a dry-run parse (requires cronie or busybox) # The system will reject invalid expressions when saving # View cron logs on systemd-based Linux journalctl -u cron --since "1 hour ago"