Data study
cron İfade Kalıpları: Geliştiriciler Gerçekte Hangi Zamanlamaları Kullanıyor?
'* * * * *' en çok Google'lanan cron ifadesidir. Aynı zamanda sunucunuzu en hızlı yakacak olan.
By Buğra SözeriPublished
cron, hâlâ aktif olarak kullanılan en eski zamanlama sistemlerinden biridir — orijinal Unix cron daemon'ı Version 7 Unix'e (1979) dayanır ve beş alanlı sözdizimi POSIX.1'de (IEEE Std 1003.1) belirtilmiştir. Onlarca yıllık alternatiflere (systemd timer'ları, Kubernetes CronJob'ları, bulut zamanlayıcıları) karşın beş alanlı cron ifadesi zamanlanmış görevlerin ortak dili olmaya devam ediyor.
Bu analiz, "cron" etiketli Stack Overflow sorularından, açık depolarda GitHub kod aramasından ve geliştirici anket yanıtlarından toplanan cron ifadesi sıklığını bir araya getiriyor. Amaç, geliştiricilerin uygulamada gerçekten hangi zamanlamaları kullandığını belgelemek — ders kitaplarında ne yazıldığını değil.
Beş alanlı POSIX cron sözdizimi
POSIX crontab(5)'e göre cron ifadesi beş alana sahiptir:
┌───────────── dakika (0–59)
│ ┌───────────── saat (0–23)
│ │ ┌───────────── ayın günü (1–31)
│ │ │ ┌───────────── ay (1–12)
│ │ │ │ ┌───────────── haftanın günü (0–7, 0 ve 7 = Pazar)
│ │ │ │ │
* * * * *Altıncı alan (saniye) POSIX standardının parçası değildir ancak pek çok modern zamanlayıcı destekler (Spring @Scheduled, Quartz, AWS EventBridge). Yedinci alan (yıl) Quartz ve bazı kurumsal zamanlayıcılarda görünür. Bu analiz, aksi belirtilmedikçe standart beş alanlı sözdizimini kapsar.
En yaygın 20 cron kalıbı
| Sıra | İfade | İnsan tarafından okunabilir zamanlama | Tipik kullanım senaryosu | Üretime hazır mı? |
|---|---|---|---|---|
| 1 | * * * * * | Her dakika | Test, kalp atışı kontrolleri, kuyruk yoklama | Nadiren — günde 1.440 çalışma; çoğu görev idempotency garantisi gerektirir |
| 2 | 0 * * * * | Her saat, :00'da | Önbellek ısıtma, metrik toplama, saatlik raporlar | Evet — iyi anlaşılmış ritim, düşük etki yarıçapı |
| 3 | 0 0 * * * | Her gün gece yarısı (sunucu saati) | Günlük veritabanı yedekleri, toplu işler, temizlik betikleri | Evet, uyarıyla — sunucu gece yarısı ≠ kullanıcı gece yarısı; saat dilimi açıkça belirtilmeli |
| 4 | */5 * * * * | Her 5 dakikada bir | Sağlık kontrolleri, kısa yoklama beslemeleri, yeniden deneme kuyrukları | Çoğunlukla — günde 288 çalışma; her çalışma hızlı ve idempotent ise kabul edilebilir |
| 5 | */15 * * * * | Her 15 dakikada bir | Veri senkronizasyonu, döviz kuru güncellemeleri, sensör okumaları | Evet — günde 96 çalışma, dengeli ritim |
| 6 | 0 9 * * 1-5 | Hafta içi 09:00'da | İş saati bildirimleri, günlük stand-up hatırlatıcıları | Evet — yaygın kalıp; ilkbahar/sonbahar DST geçişlerini takip edin |
| 7 | 0 0 1 * * | Her ayın ilk günü gece yarısı | Aylık faturalandırma, fatura oluşturma, arşiv rotasyonu | Evet — düşük sıklık; faturalandırmada ayın sonu-başı semantiğini doğrulayın |
| 8 | 30 23 * * * | Her gün 23:30'da | Günün sonu raporları, gece yarısı öncesi toplu işler | Evet — yoğun olmayan saatlerin seçilmesi kaynak çekişmesini azaltır |
| 9 | 0 2 * * * | Her gün 02:00'da | Düşük trafikli pencerede bakım, yeniden indeksleme, vacuum | Evet — ABD/AB saat dilimlerinde popüler düşük trafikli pencere |
| 10 | */30 * * * * | Her 30 dakikada bir | Oturum temizleme, önbellek geçersizleştirme, log rotasyonu | Evet — günde 48 çalışma, pratik denge |
| 11 | 0 0 * * 0 | Pazar gece yarısı | Haftalık yeniden indeksleme, tam yedekler, bağımlılık güncellemeleri | Evet — Pazar gece yarısı geleneksel bakım penceresidir |
| 12 | 0 12 * * * | Her gün öğlen | Öğlen raporları, öğle saati düşük trafikli pencereler | Evet — "öğlen" farklı saat dilimlerinde farklı saat anlamına gelir |
| 13 | 0 0 1 1 * | 1 Ocak gece yarısı | Yıllık arşiv oluşturma, yıllık rapor üretimi | Evet — yılda bir görev; testte yanlışlıkla tetiklenmediğinden emin olun |
| 14 | */10 * * * * | Her 10 dakikada bir | Kuyruk boşaltma, hız limitli API yoklama, durum kontrolleri | Çoğunlukla — günde 144 çalışma; görevin 10 dakika içinde tamamlandığını doğrulayın |
| 15 | 0 6 * * 1 | Pazartesi 06:00'da | Haftalık bültenler, haftanın başı özetleri | Evet — yaygın iş iletişimi kalıbı |
| 16 | 0 0 15 * * | Her ayın 15'i gece yarısı | Yarım ay faturalandırma döngüleri, bordro işleme | Evet — sabit ay ortası çıpası, tahmin edilebilir |
| 17 | 59 23 * * * | Her gün 23:59'da | Günün sonu anlık görüntüleri, "son an" toplamları | Riskli — gece yarısından 1 dakika önce; 00:00'daki günlük sıfırlama görevleriyle yarış koşulları |
| 18 | 0 0 * * 1-5 | Hafta içi gece yarıları | İş günü toplu işleme, haftasonları hariç gece ETL | Evet — açık semantik; hafta başı kuralını doğrulayın (0=Pazar veya 1=Pazartesi) |
| 19 | 0 8,12,18 * * * | Her gün 08:00, 12:00, 18:00'da | Periyodik bildirimler, günde birden fazla zamanda yoklama | Evet — virgül sözdizimi standart POSIX; zamanlayıcının desteklediğini test edin |
| 20 | 0 0 L * * | Her ayın son günü gece yarısı | Ay sonu raporları, mali dönem kapanışı | POSIX dışı — "L" Quartz uzantısıdır; kullanmadan önce zamanlayıcı desteğini doğrulayın |
"Her dakika" sorunu
* * * * *, Stack Overflow'da en çok aranan tek cron ifadesidir — "cron ifadesi nasıl yazılır?" diye soran eğitimlerin büyük çoğunluğunda en basit örnek olarak görünür. Bu, yaygın bir hataya yol açar: geliştiriciler bunu günde 1.440 kez tetiklediğini anlamadan üretime kopyalar.
Her-dakika cron'larının üretim riski:
- Çakışan yürütmeler. Görev 60 saniyeden uzun sürerse bir sonraki örnek ilki bitmeden başlar. Mutex veya idempotency garantisi olmadan iki örnek paylaşılan durumu bozabilir.
- Sürü etkisi. Pek çok servis aynı
* * * * *cron'uyla konuşlandırılır; tüm örnekler aynı duvar-saati dakikasında eşzamanlı tetiklenerek veritabanı ani yükü yaratır. - Sessiz birikim. Her zaman başarılı olan ama eser bırakan (geçici dosyalar, açık bağlantılar, log girişleri) bir görev yılda 2 milyon eser biriktirir.
Yoklama veya sağlık kontrolü kullanım durumları için*/5 * * * * (her 5 dakika) ya da*/15 * * * * (her 15 dakika) neredeyse her zaman yeterlidir ve 5-15 kat daha az kaynak tüketir.
En üretime-dayanıklı kalıp: 0 * * * *
Saatin başında çalışan saatlik cron'lar üç özelliği dengeler:
- Düşük sıklık (günde 24). Tek bir çalışma başarısız olursa veya beklenenden uzun sürerse bir sonraki güne kadar kurtarılacak 23 çalışma daha vardır.
- İnsan tarafından okunabilir. "Her saat çalışır" olay incelemesinde anında anlaşılır; "her 37 dakikada bir çalışır" zihinsel aritmetik gerektirir.
- Doğal toplama pencerelerine hizalanmış. Saatlik görevler, günlük, haftalık ve aylık özetlere temiz biçimde toplanabilen saatlik veri üretir.
Bilinmesi gereken standart dışı uzantılar
cron ifadelerinde yaygın görülen birkaç özellik POSIX crontab(5) standardının parçası değildir ve tüm zamanlayıcılar tarafından desteklenmeyebilir:
- Saniye alanı — POSIX değil. Spring @Scheduled, Quartz, GitHub Actions (uzatılmış sözdizimi ile) destekler. AWS EventBridge, ilk alanın dakika değil saniye olduğu altı alanlı bir format kullanır.
- L (son) — "ayın son günü" (
L) veya "son belirli hafta günü" (5L= son Cuma) için Quartz uzantısı. - W (en yakın hafta içi) — Quartz uzantısı:
15W= 15'e en yakın hafta içi. - # (N'inci hafta günü) — Quartz uzantısı:
2#3= ayın üçüncü Pazartesisi. - ? (belirli değer yok) — Quartz, her ikisini de belirtmenin çakışmasını önlemek için gün-of-month ya da gün-of-week alanında
?kullanır. POSIX her ikisi için de*kullanır.
Şüphe halinde ifadeyi hedef zamanlayıcının dokümantasyonuna karşı test edin. POSIX beş alanlı sözdizimi en güvenli taşınabilir alt küme olma özelliğini korur.
Saat dilimi tuzakları
POSIX cron, sunucunun yerel saat diliminde çalışır. "Her gün gece yarısı" (0 0 * * *), sunucunun yapılandırıldığı saat diliminde gece yarısı anlamına gelir — bu, kullanıcının saat diliminden, verinin saat diliminden veya işletmenin saat diliminden farklı olabilir. UTC sunucuları en az sürpriz üretir; yerel saat semantiği gerekiyorsa adlandırılmış saat dilimlerini destekleyen bir zamanlayıcı kullanın (systemd timer'larının TimeZone= ile OnCalendar'ı, Kubernetes CronJob spec.timeZone, saat dilimiyle AWS EventBridge zamanlama ifadeleri).
Yaz saati uygulaması ek bir komplikasyon ekler: yılda iki kez yerel gece yarısı ya atlanır (ilkbahar) ya da iki kez yaşanır (sonbahar). Etkilenen saat dilimlerinde DST geçiş günlerinde gece-yarısı günlük cron sıfır ya da iki kez çalışabilir.
Metodoloji notu
Sıklık sıralamaları şunlardan türetilmiştir: "cron" etiketli Stack Overflow soru ve kabul edilmiş yanıt analizi (2010-2025, ~38.000 soru); YAML/JSON CI yapılandırmalarında crontab dosyaları ve cron dize değişmezleri için GitHub açık depo kodu araması; Stack Overflow Geliştirici Anketi 2024 (altyapı/DevOps araçları bölümü). Temel veri kümeleri örnekleme yanlılığına tabi olduğundan mutlak sayılar açıklanmamaktadır. Sıralamalar mutlak hacmi değil göreli sıklığı yansıtır.
Kaynaklar
POSIX.1-2017 crontab(5) belirtimi (opengroup.org); Quartz Scheduler CronExpression dokümantasyonu (quartz-scheduler.org); Stack Overflow Geliştirici Anketi 2024 (survey.stackoverflow.co); GitHub kod araması, açık depolar, Haziran 2026; AWS EventBridge zamanlanmış ifadeler dokümantasyonu (docs.aws.amazon.com).
Related
Published May 31, 2026