Nasıl kullanılır?
- Bir cron ifadesi yazın veya yapıştırın ya da yaygın zamanlamalardan birini seçin.
- İfadenin ne anlama geldiğini sade bir dille görün. Geçersiz alanlar, hata nedenleriyle birlikte belirtilir.
- Yerel saat diliminizde gösterilen sonraki 10 çalıştırma zamanını kontrol edin. Sunucunuz UTC kullanıyorsa UTC’ye geçin.
- Çalıştırma zamanlarını paylaşmak için kopyalayın veya istediğiniz zamanlamayı elde edene kadar ifadeyi düzenleyin.
Nasıl çalışır?
Linux’ta crontab (Vixie cron ve cronie) ile birçok CI ve barındırma zamanlayıcısında kullanılan standart bir cron ifadesi, boşluklarla ayrılmış beş alandan oluşur: dakika (0–59), saat (0–23), ayın günü (1–31), ay (1–12 veya JAN–DEC) ve haftanın günü (0–7 veya SUN–SAT; 0 ve 7’nin ikisi de Pazar anlamına gelir). Her alanda tüm değerler için *; tek bir değer; 1-5 gibi bir aralık; 1,15,30 gibi bir liste ve */15 (her 15. değer) veya 9-17/2 (9’dan 17’ye kadar iki saatte bir) gibi bir adım kullanılabilir. Adlar büyük/küçük harfe duyarsızdır. @yearly (veya @annually), @monthly, @weekly, @daily (veya @midnight) ve @hourly kısayolları sırasıyla 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * ve 0 * * * * anlamına gelir.
Ayın günü ve haftanın günü alanları, birçok kişiyi şaşırtan bir kurala göre çalışır. Alanlardan biri * ile başlıyorsa günün her iki alanla da eşleşmesi gerekir. İki alan da kısıtlıysa gün, alanlardan herhangi biriyle eşleştiğinde çalışır: 0 0 13 * 5, her ayın 13’ünde ve her Cuma çalışır; yalnızca 13’ü Cumaya denk geldiğinde değil. Kontrol, alanın * ile başlayıp başlamadığına göre yapıldığından */2 gibi bir adım da kısıtlanmamış sayılır. Bu davranış Vixie cron ve cronie ile aynıdır; bazı zamanlayıcılar farklı davranır.
Sonraki çalıştırma zamanları tarayıcınızın saat dilimine veya çoğu sunucu ve bulut zamanlayıcısının kullandığı UTC’ye göre hesaplanır. Cron, çalıştığı makinenin saat dilimini kullanır. Yaz saati uygulaması geçişlerinde gerçek cron arka plan hizmetleri farklı davranabilir; bu araç, saatler ileri alındığında mevcut olmayan yerel saatleri göstermez ve yinelenen bir saati yalnızca bir kez listeler. Genişletilmiş söz dizimleri desteklenmez: saniye veya yıl içeren altı ya da yedi alanlı Quartz ifadeleri ve ?, L, W ve # özel karakterleri.
Örnekler
Mesai saatlerinde sistem kontrolü
*/15 9-17 * * 1-5, pazartesiden cumaya 09:00 ile 17:59 arasında her 15 dakikada bir çalışır. Her günün son çalıştırma saati 17:45’tir.
Gecelik yedekleme
30 2 * * *, her gün 02:30’da çalışır. Sunucu UTC kullanıyorsa ve siz New York’taysanız UTC modundaki sonraki çalıştırmalar listesi, sunucunun kullanacağı gerçek saatleri gösterir.
Gün alanındaki tuzak
0 9 1 * 1, “ayın ilk günü pazartesiyse 09:00’da” gibi görünür; ancak her ayın 1’inde 09:00’da ve ayrıca her pazartesi çalışır. Yalnızca ayın ilk pazartesi günü çalıştırmak için 0 9 1-7 * * zamanlamasını kullanın ve betik içinde haftanın gününü kontrol edin.
Sık sorulan sorular
Cron’da */5 ne anlama gelir?
Alanı, en düşük değerden başlayarak her beş değerde bir çalıştırır. Dakika alanında */5, 0, 5, 10 … 55. dakikalarda çalışır. Saat alanında */5, 0, 5, 10, 15 ve 20 saatlerinde çalışır; dolayısıyla 20:00 ile gece yarısı arasındaki süre beş değil, dört saattir.
Görevim neden beklediğimden fazla gün çalışıyor?
Ayın günü ve haftanın günü alanlarının ikisi de kısıtlıysa cron, bu alanlardan herhangi biriyle eşleşen günlerde çalışır. Örneğin 0 0 15 * 1, ayın 15’inde ve her pazartesi çalışır. Yalnızca diğer alanın dikkate alınması için bu iki alandan birini * olarak ayarlayın.
Cron hangi saat dilimini kullanır?
crontab içinde CRON_TZ veya TZ ayarlanmadıysa (cronie tarafından desteklenir), cron arka plan hizmetini çalıştıran sunucunun sistem saat dilimi kullanılır. Bulut zamanlayıcıları çoğunlukla varsayılan olarak UTC’yi kullanır. UTC sunucusunun kullanacağı saatleri görmek için UTC seçeneğini kullanın.
Saniye veya yıl alanı kullanabilir miyim?
Standart cron’da kullanamazsınız; standart cron beş alanlıdır ve bir dakikalık çözünürlüğe sahiptir. Saniye ve yıl içeren altı ve yedi alanlı biçimler Quartz, Spring ve benzeri kitaplıklarda kullanılır ve bu araç tarafından desteklenmez.
Pazar için 0 mı, 7 mi kullanılır?
İkisi de. Haftanın günü alanında 0 ve 7, Pazar anlamına gelir; 1 pazartesi, 6 cumartesidir. SUN ile SAT arasındaki üç harfli adları da kullanabilirsiniz.
Gizlilik
İfade ayrıştırılır ve çalıştırma zamanları tarayıcınızda hesaplanır. Girdiğiniz hiçbir şey yüklenmez, saklanmaz veya analiz verilerine eklenmez.