Bir cron ifadesi, bir görevin tekrarlanan çalışma zamanlamasını tanımlamanın kompakt bir yoludur ve 1970'lerden beri Unix benzeri sistemlerde kullanılır. Boşlukla ayrılmış beş alan, neredeyse her düzenli zamanlamayı ifade edebilir.
Bir ifadenin beş alanı
Standart bir cron ifadesi dakika saat ayın-günü ay haftanın-günü şeklindedir. Örneğin, 30 14 * * 1 "her Pazartesi saat 14:30'da" anlamına gelir — yıldızlar ayın günü ve ay için "herhangi bir değer" anlamına gelir.
Eğik çizgi ve virgüllerin anlamı
*/15 * * * * örneğindeki gibi bir yıldızdan sonra gelen eğik çizgi "her 15 birimde bir" anlamına gelir — bu durumda her 15 dakikada bir. Virgül birkaç belirli değeri sıralamanıza olanak tanır; örneğin 0 9,18 * * * görevi günde iki kez çalıştırır: 9:00 ve 18:00'de.
"Haftanın günü" alanı neden en çok kafa karıştırır
Standart cron'da, hem "ayın günü" hem de "haftanın günü" alanları aynı anda yıldızdan farklı bir değere ayarlanabilir — bu durumda görev, iki koşuldan en az biri sağlanırsa çalışır (mantıksal VE değil, VEYA), bu da çoğu insanın sezgisel beklentisiyle çelişir.
Aynı sözdizimi, crontab'dan Laravel zamanlayıcısına
Türkiye'de giderek büyüyen PHP ve Laravel geliştirici topluluğu, routes/console.php içinde ->dailyAt('13:00') gibi akıcı çağrılarla görev zamanlayabiliyor — ancak arka planda bu çağrılar tam olarak aynı beş alanlı cron sözdizimine dönüştürülür. Ham cron sözdizimini anlamak, zamanlanmış bir görevin beklenmedik bir saatte neden çalıştığını (ya da çalışmadığını) çözmeyi çok kolaylaştırır.
Bu neden gereklidir
- Bir sunucu yapılandırmasında veya CI/CD pipeline'ında başkasının cron ifadesini çözmek.
- Bir zamanlamayı üretime dağıtmadan önce doğru yazıldığını doğrulamak.
- Bir görevin sonraki birkaç çalışmasının tam zamanını planlamak.
Yaz/kış saati geçişi ve cron
Zamanlayıcı yaz/kış saati (DST) geçişi olan bir dilimde çalışıyorsa, var olmayan bir saate zamanlanmış bir görev (örneğin saatlerin ileri alındığı gece 2:30) o gün hiç çalışmayabilir, saatlerin geri alınmasıyla tekrarlanan bir saate zamanlanmış olan ise iki kez çalışabilir. Türkiye 2016'da yaz saatini kalıcı olarak kaldırdığı için bu sorun yurt içinde artık yaşanmıyor, ama yurt dışındaki sunucularla çalışan sistemler için hâlâ geçerli — bu yüzden kritik görevler için genellikle tipik geçiş penceresinin dışında bir zaman (örneğin gece yarısı ya da sabah 3-4) seçilir veya UTC saat dilimi açıkça belirtilir.