Cron İfadesi Ayrıştırıcı

Cron ifadelerini okunabilir açıklamalara dönüştürün ve sonraki çalışma zamanlarını önizleyin

Örnek dene

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

12026-03-26 09:00:00
22026-03-27 09:00:00
32026-03-30 09:00:00
42026-03-31 09:00:00
52026-04-01 09:00:00
62026-04-02 09:00:00
72026-04-03 09:00:00
82026-04-06 09:00:00
92026-04-07 09:00:00
102026-04-08 09:00:00

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.

Anında Ayrıştırma
Bir cron ifadesi yazın veya yapıştırın; okunabilir açıklamayı ve sonraki 10 zamanlanmış çalışma zamanını hemen görün. Gönder düğmesi yok, yeniden yükleme yok.
🔒
Gizlilik Öncelikli İşleme
Tüm ayrıştırma işlemi tarayıcınızda yerel olarak çalışır. Cron ifadeleriniz ve zamanlama verileriniz cihazınızdan hiçbir zaman çıkmaz.
📋
Alan Alan Döküm
Beş alanın her biri ayrı ayrı ayrıştırılır ve çözümlenen değerler gösterilir. Hangi alanın zamanlamayı kontrol ettiğini bir bakışta anlayın.
🔄
Hesap Gerekmez
Sayfayı açın ve ayrıştırmaya başlayın. Giriş yok, API anahtarı yok, kurulum yok. Modern tarayıcısı olan her cihazda çalışır.

Cron Ayrıştırıcı Kullanım Senaryoları

Frontend Geliştirici
Cron ifadelerini yönetim panellerinde ve zamanlama arayüzlerinde backend'e göndermeden önce doğrulayın. Bir kullanıcının açılır menüden seçtiği zamanlamanın form tarafından oluşturulan cron dizesiyle eşleştiğini onaylayın.
Backend Mühendisi
Beklenmedik zamanlarda çalışan zamanlanmış işleri hata ayıklayın. Görev kuyruğu yapılandırmanızdaki (Celery, Sidekiq, Quartz) cron ifadesini yapıştırın ve sonraki çalışma zamanlarının beklentilerinizle örtüşüp örtüşmediğini kontrol edin.
DevOps / SRE
CI/CD pipeline'larındaki, Kubernetes CronJob'larındaki ve bulut zamanlayıcı yapılandırmalarındaki cron zamanlamalarını denetleyin. Yedekleme işlerinin, sertifika yenilemelerinin ve temizleme betiklerinin dağıtımdan önce doğru zamanlandığını doğrulayın.
QA Mühendisi
Test ortamındaki zamanlanmış görevlerin üretim zamanlamasıyla eşleştiğini doğrulayın. Ay veya haftanın günü alanlarındaki bir-kapalı hatalarını prod'da kaçırılan çalışmalara yol açmadan önce yakalayın.
Veri Mühendisi
ETL pipeline'ları ve veri senkronizasyon işleri için cron tetikleyicilerini kontrol edin. Çıkarma pencerelerinin örtüşmediğini ve alt akış bağımlılıklarının yeterli önceden bildirim süresine sahip olduğunu onaylayın.
Öğrenci / Öğrenen
Farklı ifadeleri deneyerek ve sonuçları gerçek zamanlı olarak görerek cron sözdizimini öğrenin. Joker karakterlerin, aralıkların ve adım değerlerinin nasıl etkileşime girdiğine dair sezgi geliştirin.

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.

AlanAralıkOperatörlerAçıklama
Minute0–59* , - /Minute within the hour
Hour0–23* , - /Hour of the day (24-hour)
Day (month)1–31* , - /Day of the month
Month1–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:

KarakterAdDavranış
*WildcardMatches every possible value in the field. * in the minute field means "every minute."
,ListSeparates individual values. 1,15 in the day field means "the 1st and 15th."
-RangeDefines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday."
/StepDefines 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:

İfadeZamanlama
* * * * *Every minute
0 * * * *Every hour (at minute 0)
*/15 * * * *Every 15 minutes
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
30 2 * * 0Every Sunday at 2:30 AM
0 0 1 * *First day of every month at midnight
0 0 * * 1Every 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-5Every 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:

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

Sıkça Sorulan Sorular

5 alanlı ile 6 alanlı cron ifadeleri arasındaki fark nedir?
Standart (POSIX) cron formatı 5 alana sahiptir: dakika, saat, ayın-günü, ay, haftanın-günü. Quartz Scheduler ve Spring gibi bazı araçlar başına bir saniye alanı ekleyerek 6 alana çıkarır. AWS EventBridge sonuna bir yıl alanı ekleyerek 6 alan kullanır. Bu ayrıştırıcı, crontab, GitHub Actions, Kubernetes CronJob'ları ve çoğu zamanlama kütüphanesiyle uyumlu olan standart 5 alanlı formatı destekler.
Cron, ayın-günü ve haftanın-günü alanlarını birlikte nasıl işler?
Her iki alan da kısıtlandığında (* değil), cron VEYA mantığını kullanır: iş, koşullardan biri doğru olduğunda çalışır. Örneğin 0 9 15 * 1, 'her ayın 15'inde saat 9:00'da VEYA her Pazartesi' anlamına gelir. Bu yaygın bir karışıklık kaynağıdır. Her iki alan da * olarak ayarlandığında iş her gün çalışır.
Cron hangi saat dilimini kullanır?
Geleneksel crontab, sistemin yerel saat diliminde çalışır. Kubernetes CronJob'ları varsayılan olarak kube-controller-manager saat dilimini (genellikle UTC) kullanır; ancak Kubernetes 1.25'ten itibaren isteğe bağlı .spec.timeZone alanını destekler. AWS EventBridge ve Google Cloud Scheduler, zamanlama başına saat dilimi belirtmenize olanak tanır. Bir cron işi dağıtmadan önce zamanlayıcınızın hangi saat dilimini kullandığını her zaman kontrol edin.
Cron her 30 saniyede bir iş çalıştırabilir mi?
Standart 5 alanlı cron, dakikanın altında zamanlama desteklemez. En küçük aralık bir dakikadır (*/1 veya *). Her 30 saniyede bir bir şey çalıştırmak için ya saniye alanı olan 6 alanlı cron (Quartz, Spring), ya 30 saniye uyuyup tekrar çalışan bir sarmalayıcı betik ya da OnCalendar ile systemd zamanlayıcıları gibi farklı bir zamanlama mekanizması gerekir.
Haftanın-günü alanı için 0 ile 7 aynı mı?
Çoğu cron uygulamasında hem 0 hem de 7 Pazar gününü temsil eder. Bu gelenek, orijinal Unix cron'dan gelmektedir. Ancak bazı sistemler (Quartz) Pazar için 1, Cumartesi için 7 kullanır. POSIX, aralığı 0 = Pazar olmak üzere 0-6 olarak tanımlar. Zamanlayıcınız adlandırılmış günleri (SUN, MON) kabul ediyorsa belirsizliği önlemek için bunları kullanın.
Var olmayan bir ayın-günü ayarlarsam ne olur?
31'ine (0 0 31 * *) bir iş zamanlarsanız, 31 günden az olan aylarda çalışmaz. Cron bir sonraki aya taşımaz. Şubat her zaman atlanır; Nisan, Haziran, Eylül ve Kasım da atlanır. Her ayın son günü çalıştırmak için bazı cron uygulamaları L değiştiricisini (0 0 L * *) destekler; ancak standart POSIX cron desteklemez.
Dağıtımdan önce bir cron ifadesini nasıl test ederim?
Sonraki çalışma zamanlarını görmek ve zamanlamanın amacınızla örtüşüp örtüşmediğini doğrulamak için bu gibi çevrimiçi bir ayrıştırıcı kullanın. Üretim doğrulaması için çoğu cron kütüphanesi bir sonraki çalışma hesaplama işlevi sağlar: Node.js'de cron-parser, Python'da croniter, Go'da robfig/cron. Dağıtımdan önce sonraki N yürütme zamanını doğrulamak için test paketinizdeki ifadeyi bunlardan biriyle çalıştırın.