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.

🖱️
Görsel Zamanlama Oluşturucu
Açılır menüler ve geçiş düğmelerinden dakika, saat, gün, ay ve haftanın günü değerlerini seçin. Cron ifadesi her alanı değiştirdikçe gerçek zamanlı olarak güncellenir. Sözdizimini ezberlemeye gerek yok.
🔒
Gizlilik Öncelikli İşleme
Tüm oluşturma işlemi tarayıcınızda çalışır. Hiçbir zamanlama verisi sunucuya gönderilmez. Cron ifadeleriniz ve iş yapılandırmalarınız cihazınızda kalır.
Önizlemeli Anında Çıktı
Oluşturulan cron ifadesini ve oluştururken sonraki zamanlanmış çalışma zamanlarının önizlemesini görün. Yapılandırmanıza yapıştırmadan önce zamanlamanın doğru olduğunu doğrulayın.
📋
Hesap Gerekmez
Sayfayı açın ve oluşturmaya başlayın. Giriş yok, API anahtarı yok, kurulum yok. Mobil dahil modern tarayıcısı olan her cihazda çalışır.

Cron Oluşturucu Kullanım Senaryoları

Frontend Geliştirici
Yönetim panelleri ve zamanlama arayüzleri için cron ifadeleri oluşturun. Veritabanında cron dizelerini depolayan kullanıcıya yönelik zamanlama seçicileri için doğru sözdizimini üretin.
Backend Mühendisi
Celery, Sidekiq ve Bull gibi görev kuyrukları için cron ifadeleri oluşturun. Zamanlama dizesini üretin, sonraki çalışmaları doğrulayın ve iş yapılandırmanıza yapıştırın.
DevOps / SRE
Kubernetes CronJob'ları, CI/CD pipeline'ları ve altyapı otomasyonu için cron zamanlamaları oluşturun. Sözdizimi hatası yapmadan yedekleme pencereleri, sertifika yenileme ve günlük rotasyonu için ifadeler oluşturun.
QA Mühendisi
Entegrasyon testi için belirli aralıklarda tetiklenen test cron ifadeleri oluşturun. Zamanlayıcı davranışını doğrulamak için öngörülebilir çalışma zamanları üreten zamanlamalar oluşturun.
Veri Mühendisi
ETL pipeline tetikleyicileri ve veri senkronizasyon zamanlamaları için cron ifadeleri oluşturun. Çıkarma, dönüştürme ve yükleme aşamaları için hassas zamanlama ile örtüşmeyen zamanlamalar oluşturun.
Öğrenci / Öğrenen
Görsel oluşturucuyla deneyler yaparak cron sözdizimini öğrenin. Tek tek alanları değiştirin ve ifadenin ile sonraki çalışma zamanlarının nasıl değiştiğini görün. Joker karakterler, aralıklar ve adım değerleri için sezgi geliştirin.

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İfadeTipik 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 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

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.

Beş alanlı cron ifadesi düzeni:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

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örSözdizimiÖrnekÜretir
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

Kod Örnekleri

Node.js, Python, Go ve bash'te cron zamanlamalarını oluşturma ve kaydetme:

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

Sıkça Sorulan Sorular

Cron ifadesindeki doğru alan sırası nedir?
Standart beş alanlı sıra şöyledir: dakika (0-59), saat (0-23), ayın günü (1-31), ay (1-12), haftanın günü (0-6, 0 Pazar'dır). Bu sıra POSIX tarafından tanımlanmış olup crontab, Kubernetes, GitHub Actions ve çoğu cron kütüphanesi tarafından kullanılır. Quartz Scheduler gibi bazı araçlar başına bir saniye alanı ekleyerek altı alana çıkarır; ancak beş alanlı düzen evrensel varsayılandır.
Her N dakikada bir cron ifadesi nasıl oluştururum?
Dakika alanında adım operatörünü kullanın: */N. Her 5 dakika için */5 * * * * yazın. Her 15 dakika için */15 * * * * yazın. Adım operatörü alanın aralığını eşit olarak böler. */7'nin saat sınırları boyunca her 7 dakikada bir çalışma üretmediğini unutmayın; 0, 7, 14, 21, 28, 35, 42, 49, 56 dakikalarında çalışma üretir, ardından bir sonraki saatte 0'a sıfırlanır.
Her ayın son günü çalışan bir cron ifadesi oluşturabilir miyim?
Standart POSIX cron'da 'ayın son günü' operatörü yoktur. crontab veya Kubernetes CronJob'larına 0 0 L * * yazamazsınız. Geçici çözümler arasında 28-31. günleri zamanlayıp bir kabuk kontrolü eklemek ([ $(date +%d -d tomorrow) -eq 01 ]) veya L değiştiricisini destekleyen Quartz gibi genişletilmiş bir cron uygulaması kullanmak yer alır. AWS EventBridge hız ifadeleri de son günü doğrudan hedefleyebilir.
Cron oluşturucu ile cron ayrıştırıcı arasındaki fark nedir?
Cron oluşturucu, zamanlama gereksinimlerinizi (örn. 'her hafta içi saat 9:00'da') alır ve doğru cron ifadesini (0 9 * * 1-5) çıktı olarak verir. Cron ayrıştırıcı bunun tersine çalışır: mevcut bir ifadeyi alarak insan tarafından okunabilir bir açıklama üretir. Yeni zamanlamalar oluştururken oluşturucuyu kullanın. Mevcut zamanlamaları incelerken veya hata ayıklarken ayrıştırıcıyı kullanın.
Cron işlerinin çakışmasını nasıl önlerim?
Cron'un kendisi çakışan çalışmaları engellemez. Her dakika için zamanlanan bir iş 90 saniye sürerse iki örnek çakışır. Bunu önlemek için bir kilit dosyası (bash'te flock), dağıtık bir kilit (Redis, etcd) veya zamanlayıcınızın yerleşik eşzamanlılık politikasını kullanın. Kubernetes CronJob'larında Forbid veya Replace olarak ayarlanabilen bir concurrencyPolicy alanı bulunur. Celery gibi uygulama düzeyindeki zamanlayıcılarda solo havuzu veya görev düzeyinde bir kilit kullanın.
Cron'da haftanın ilk günü 0 mu yoksa 1 mi?
POSIX cron'da 0 Pazar ve 6 Cumartesi'dir. Çoğu uygulamada hem 0 hem de 7 Pazar'ı temsil eder. Quartz Scheduler, 1'in Pazar ve 7'nin Cumartesi olduğu farklı bir kural kullanır. Sisteminiz adlandırılmış günleri (SUN, MON, TUE) kabul ediyorsa platformlar arası karışıklığı önlemek için rakamlar yerine bunları kullanın.
Belirli bir saat dilimi için cron ifadesi nasıl oluştururum?
Geleneksel crontab, sistemin yerel saat dilimini kullanır. Bazı sistemlerde crontab dosyasında TZ değişkenini ayarlayabilirsiniz (TZ=America/New_York). Kubernetes CronJob'ları sürüm 1.25'ten itibaren .spec.timeZone alanını destekler. AWS EventBridge ve Google Cloud Scheduler, zamanlama başına saat dilimi belirtmenize olanak tanır. Cron ifadesinin yanında beklenen saat dilimini her zaman yapılandırmanızda belgeleyin.