Skip to content

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 Published

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 zamanlamaTipik kullanım senaryosuÜretime hazır mı?
1* * * * *Her dakikaTest, kalp atışı kontrolleri, kuyruk yoklamaNadiren — günde 1.440 çalışma; çoğu görev idempotency garantisi gerektirir
20 * * * *Her saat, :00'daÖnbellek ısıtma, metrik toplama, saatlik raporlarEvet — iyi anlaşılmış ritim, düşük etki yarıçapı
30 0 * * *Her gün gece yarısı (sunucu saati)Günlük veritabanı yedekleri, toplu işler, temizlik betikleriEvet, uyarıyla — sunucu gece yarısı ≠ kullanıcı gece yarısı; saat dilimi açıkça belirtilmeli
4*/5 * * * *Her 5 dakikada birSağ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 birVeri senkronizasyonu, döviz kuru güncellemeleri, sensör okumalarıEvet — günde 96 çalışma, dengeli ritim
60 9 * * 1-5Hafta 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
70 0 1 * *Her ayın ilk günü gece yarısıAylık faturalandırma, fatura oluşturma, arşiv rotasyonuEvet — düşük sıklık; faturalandırmada ayın sonu-başı semantiğini doğrulayın
830 23 * * *Her gün 23:30'daGünün sonu raporları, gece yarısı öncesi toplu işlerEvet — yoğun olmayan saatlerin seçilmesi kaynak çekişmesini azaltır
90 2 * * *Her gün 02:00'daDüşük trafikli pencerede bakım, yeniden indeksleme, vacuumEvet — ABD/AB saat dilimlerinde popüler düşük trafikli pencere
10*/30 * * * *Her 30 dakikada birOturum temizleme, önbellek geçersizleştirme, log rotasyonuEvet — günde 48 çalışma, pratik denge
110 0 * * 0Pazar gece yarısıHaftalık yeniden indeksleme, tam yedekler, bağımlılık güncellemeleriEvet — Pazar gece yarısı geleneksel bakım penceresidir
120 12 * * *Her gün öğlenÖğlen raporları, öğle saati düşük trafikli pencerelerEvet — "öğlen" farklı saat dilimlerinde farklı saat anlamına gelir
130 0 1 1 *1 Ocak gece yarısıYıllık arşiv oluşturma, yıllık rapor üretimiEvet — yılda bir görev; testte yanlışlıkla tetiklenmediğinden emin olun
14*/10 * * * *Her 10 dakikada birKuyruk 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
150 6 * * 1Pazartesi 06:00'daHaftalık bültenler, haftanın başı özetleriEvet — yaygın iş iletişimi kalıbı
160 0 15 * *Her ayın 15'i gece yarısıYarım ay faturalandırma döngüleri, bordro işlemeEvet — sabit ay ortası çıpası, tahmin edilebilir
1759 23 * * *Her gün 23:59'daGü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ı
180 0 * * 1-5Hafta içi gece yarılarıİş günü toplu işleme, haftasonları hariç gece ETLEvet — açık semantik; hafta başı kuralını doğrulayın (0=Pazar veya 1=Pazartesi)
190 8,12,18 * * *Her gün 08:00, 12:00, 18:00'daPeriyodik bildirimler, günde birden fazla zamanda yoklamaEvet — virgül sözdizimi standart POSIX; zamanlayıcının desteklediğini test edin
200 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:

  1. 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.
  2. İnsan tarafından okunabilir. "Her saat çalışır" olay incelemesinde anında anlaşılır; "her 37 dakikada bir çalışır" zihinsel aritmetik gerektirir.
  3. 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