Cron ifadesini yaz, ne anlama geldiğini Türkçe oku ve sonraki on çalışma zamanını kendi saat diliminde gör. Ya da alanları doldurup ifadeyi araca kurdur. Hiçbir şey sunucuya gitmez.
Her kutuya tek bir değer, virgülle liste, tireyle aralık ya da eğik çizgiyle adım yazabilirsin. Boş bırakırsan yıldız kabul edilir.
Birine tıkla, yukarıdaki kutuya yerleşsin.
Kutuya bir cron ifadesi yaz, ya da aşağıdaki sık kullanılan ifadelerden birine tıkla. Alanları tek tek doldurup ifadeyi araca da kurdurabilirsin.
Araç ifadeyi düz Türkçeye çevirir ve beş alanı tek tek gösterir. Bir yerde hata varsa hangi alanın hangi parçası yüzünden kabul edilmediğini yazar.
Saat dilimini seç ve görevin gerçekten hangi tarih ve saatlerde çalışacağını gör. Tahmin etmek yerine takvimin kendisine bakmış olursun.
Çalıştırılacak komutu yaz, araç ifadeyle birleştirip tam satırı hazırlasın. Kopyalayıp doğrudan crontab dosyana yapıştırabilirsin.
Bir cron ifadesi boşlukla ayrılmış beş alandan oluşur ve soldan sağa hep aynı sırayı izler: dakika, saat, ayın günü, ay, haftanın günü. Her alan ya belirli bir değeri ya da “fark etmez” anlamına gelen yıldızı taşır. Beş yıldız, yani her dakika çalışan bir görev, cron’un en kısa geçerli ifadesidir.
| Sıra | Alan | Geçerli değerler | Not |
|---|---|---|---|
| 1 | Dakika | 0-59 | Saatin kaçıncı dakikasında çalışacağı. |
| 2 | Saat | 0-23 | Gece yarısı 0, öğlen 12’dir. 24 diye bir değer yoktur. |
| 3 | Ayın günü | 1-31 | Ayın kaçıncı günü. Olmayan bir gün yazarsan görev hiç çalışmaz. |
| 4 | Ay | 1-12 | JAN, FEB gibi üç harfli kısaltmalar da kabul edilir. |
| 5 | Haftanın günü | 0-7 | Pazar hem 0 hem 7’dir. MON, TUE gibi kısaltmalar da yazılabilir. |
| İşaret | Örnek | Anlamı |
|---|---|---|
| * | * * * * * | Bu alandaki her değer. Beşi birden her dakika demektir. |
| , | 0 9,17 * * * | Liste: sabah 9 ve akşam 17. |
| - | 0 9 * * 1-5 | Aralık: pazartesiden cumaya. |
| / | */15 * * * * | Adım: sıfırdan başlayarak on beşer dakikada bir. |
| / | 5/10 * * * * | Beşinci dakikadan başlayarak onar dakikada bir. Quartz biçimidir; her cron sürümü kabul etmez. |
Ayın günü ve haftanın günü alanlarının ikisi birden doluysa cron bunları kesişim olarak değil, birleşim olarak değerlendirir. Yani 0 0 1 * 1 ifadesi “ayın 1’i pazartesiye denk gelirse” demek değildir; “her ayın 1’inde, ayrıca her pazartesi” demektir. Ayda dört ya da beş kez fazladan çalışır.
Bunun sebebi tarihseldir ve düzeltilmemiştir: iki alan farklı takvim kavramlarını anlatır, cron da hangisinin kastedildiğini bilemeyeceği için ikisini birden kabul eder. Bir günü hem tarihe hem haftanın gününe göre kısıtlamak istiyorsan cron bunu yapamaz; kontrolü betiğin içine koyman gerekir.
Bu araç iki alanı da doldurduğunda uyarı gösterir ve sonraki çalışma zamanlarını gerçek davranışa göre listeler; böylece tahmin etmek yerine görürsün.
| Kısayol | Karşılığı | Ne zaman çalışır? |
|---|---|---|
| @yearly | 0 0 1 1 * | Yılda bir kez, 1 Ocak gece yarısı. |
| @monthly | 0 0 1 * * | Her ayın ilk günü gece yarısı. |
| @weekly | 0 0 * * 0 | Her pazar gece yarısı. |
| @daily | 0 0 * * * | Her gün gece yarısı. |
| @hourly | 0 * * * * | Her saat başı. |
| @reboot | — | Sunucu her açıldığında bir kez. Bir zamanı yoktur, bu yüzden sonraki çalışma listelenemez. |
Bazı zamanlayıcılar altı alanlı bir biçim kullanır ve en başa saniyeyi ekler. Quartz, Spring Scheduler ve birçok bulut zamanlayıcısı böyledir; Linux’un kendi crontab’ı ise değildir. Bu araç altı alanlı ifadeyi de okur, ama okurken bunun standart crontab’a yapıştırılamayacağını hatırlatır.
Cron, ifadeyi çalıştığı makinenin yerel saatine göre yorumlar. Sunucun UTC’deyse “0 9 * * *” Türkiye’de sabah 9’da değil, öğlen 12’de çalışır. Aradaki fark yaz saati uygulayan ülkelerde yıl içinde değişebilir; Türkiye 2016’dan beri sabit UTC+3 kullandığı için bu sorun burada yaşanmaz, ama sunucun başka bir ülkedeyse yaşanır.
Yukarıdaki liste seçtiğin saat dilimindeki duvar saatini gösterir. Sunucunun hangi saat dilimini kullandığını doğrulamadan bir görevi canlıya almak, gece yarısı çalışması gereken bir raporun öğlen çalışmasının en yaygın sebebidir.
Yazdığın ifadenin ne zaman çalışacağını düz bir cümleyle söyler; alan alan tahmin etmene gerek kalmaz.
Takvimi ileri sarar ve gerçekten hangi tarihlerde çalışacağını gösterir. Şubat 30 gibi hiç gelmeyecek bir tarih yazdıysan bunu da söyler.
Sunucun hangi saat dilimindeyse onu seç; listedeki saatler o dilimin duvar saatine göre çıkar.
Geçersiz bir ifade yazdığında hangi alanın, hangi parçasının ve neden kabul edilmediğini yazar.
Komutunu yaz, aracın ürettiği tam satırı kopyala ve doğrudan crontab dosyana yapıştır.
Çözümleme ve hesaplama tarayıcında yapılır. Yazdığın ifade ve komut bize ulaşmaz, hiçbir yerde saklanmaz.
Cron ifadesi, bir görevin ne zaman çalışacağını anlatan beş alanlı kısa bir zamanlama satırıdır. Unix ve Linux sistemlerinde crontab dosyasına yazılır; sunucu bu satıra bakarak görevi kendisi tetikler. Sıralama soldan sağa hep aynıdır: dakika, saat, ayın günü, ay, haftanın günü.
*/5 * * * * yazman yeterli. Eğik çizgi adım anlamına gelir: dakika alanında sıfırdan başlayıp beşer beşer ilerler. Aynı mantıkla */10 on dakikada bir, */30 yarım saatte bir çalışır.
Haftanın günü alanına 1-5 yaz: 0 9 * * 1-5 pazartesiden cumaya her gün saat 09.00’da çalışır. Pazar hem 0 hem 7 ile yazılabilir, bu yüzden hafta sonu 0,6 ya da 6,7 olur.
İkisi VE ile değil, VEYA ile birleşir. 0 0 1 * 1 ifadesi “ayın 1’i pazartesiye denk gelirse” demek değildir; her ayın 1’inde ve ayrıca her pazartesi çalışır. Bu, cron’un en sık yanlış anlaşılan davranışıdır; araç iki alanı da doldurduğunda seni uyarır.
Çalıştığı makinenin yerel saatini. Sunucun UTC’deyse 0 9 * * * Türkiye saatiyle 12.00’de çalışır. Bu araçta saat dilimini seçebilirsin; liste o dilimin duvar saatine göre çıkar, böylece sunucunun ayarını doğrulamadan görev kurmak zorunda kalmazsın.
Sık kullanılan birkaç zamanlamanın okunaklı karşılığıdır. @daily ile 0 0 * * * aynı şeydir; @hourly, @weekly, @monthly ve @yearly de öyle. @reboot ise farklıdır: bir saati yoktur, sunucu her açıldığında bir kez çalışır.
Quartz, Spring Scheduler ve birçok bulut zamanlayıcısı en başa bir saniye alanı ekler. Linux’un kendi crontab’ı bunu kabul etmez; altı alanlı bir ifadeyi crontab dosyasına yapıştırırsan hata alırsın. Bu araç altı alanlı biçimi okur ve okurken bunu hatırlatır.
En sık üç sebep: takvimde olmayan bir gün yazmışsındır (0 0 30 2 * gibi — şubatın 30’u hiç gelmez), sunucunun saat dilimi beklediğinden farklıdır, ya da iki gün alanını birden doldurup VEYA davranışına takılmışsındır. Araç ilkini “hiç çalışmaz” uyarısıyla, üçüncüsünü de ayrı bir uyarıyla söyler.
Hayır. Çözümleme, sonraki çalışma zamanlarının hesabı ve crontab satırının kurulması tarayıcında yapılır. Yazdıkların ağa çıkmaz, bize ulaşmaz ve hiçbir yerde saklanmaz; sekmeyi kapattığında iz kalmaz.
Evet, tamamen ücretsiz ve üyelik gerekmiyor. Sunucuda iş yapılmadığı için korunacak bir kota, kuyruk ya da günlük kullanım sınırı da yok.