Bir Cron İfadesini Elle Nasıl Okursun?
Zamanlanmış görev söz dizimini adım adım anlamak.
Özet
Bir cron ifadesi soldan sağa dakika, saat, ayın günü, ay ve haftanın günü sırasıyla beş alandan oluşur. Her alandaki yıldız işareti 'her biri' anlamına gelir.
Adım adım
- İfadeyi beş alana bölün: dakika, saat, ay günü, ay, hafta günü.
- Her alandaki sayının veya yıldızın ne anlama geldiğini belirleyin.
- İfadeyi bir görsel araçla doğrulayın.
- Sunucu saat diliminin beklediğinizle aynı olduğundan emin olun.
Neden önemli?
Cron ifadeleri genelde bir kez yazılır ve aylarca kimse bakmaz. Sonra bir gün bir yedekleme beklenmedik saatte çalışır ya da bir rapor hiç gönderilmez, ve birinin o satırı okuyup ne yaptığını anlaması gerekir. Başkasının yazdığı bir sunucu yapılandırmasını devralırken veya bir hatayı ararken, ifadeyi elle okuyabilmek size araç açmadan hızlı bir fikir verir.
Özel karakterleri okumak
- Virgül bir liste demektir: saat alanındaki 9,13,17 "saat 9'da, 13'te ve 17'de" diye okunur.
- Tire bir aralıktır: hafta günü alanındaki 1-5 "pazartesiden cumaya" anlamına gelir.
- Eğik çizgi bir adımdır: dakika alanındaki */15 "her 15 dakikada bir", yani 0, 15, 30 ve 45. dakikalar demektir.
- Hafta günü alanında 0 pazar günüdür; birçok sistemde 7 de pazar olarak kabul edilir.
Örnek bir ifadeyi birlikte okuyalım
30 2 * * 1-5 ifadesini alalım. İlk alan 30, yani dakika 30. İkinci alan 2, yani saat 2. Ayın günü ve ay alanlarında yıldız var, bunlar kısıtlama getirmiyor. Son alan 1-5, yani pazartesiden cumaya. Hepsini birleştirince: hafta içi her gün gece 02:30'da. Okurken her zaman önce saati ve dakikayı birleştirip ardından gün kısıtlarına bakmak işi kolaylaştırır.
Sık yapılan hatalar
- Ayın günü ve hafta günü alanlarının ikisi de doluysa bunları "ve" diye okumak. Klasik cron'da bu durumda görev iki koşuldan biri tuttuğunda çalışır, yani "veya" olarak okunmalıdır.
- * 9 * * * ifadesini "her gün saat 9'da bir kez" sanmak. Dakika alanı yıldız olduğu için 09:00 ile 09:59 arasında her dakika çalışır.
- Altı veya yedi alanlı bir ifadeyi beş alanlı gibi okumak. Bazı sistemler en başa saniye, en sona yıl alanı ekler; ilk alanın dakika olduğunu varsaymadan önce hangi sistemde olduğunuzu kontrol edin.
- Ay alanında 0'dan saymak. Aylar 1'den 12'ye kadar gider.
Ne zaman yardım istemeli?
Okuduğunuz ifade ödeme alma, toplu e-posta gönderme veya veri silme gibi geri dönüşü zor bir işi tetikliyorsa, yorumunuzu değiştirmeden önce ifadeyi yazan kişiyle ya da sistem yöneticisiyle teyit edin.