Cron İfadesi Oluşturucu

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.

Sonraki çalışma zamanları

Alanları doldurarak kur

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.

Crontab satırı

Sık kullanılan cron ifadeleri

Birine tıkla, yukarıdaki kutuya yerleşsin.

Cron ifadesi nasıl yazılır?

  1. İfadeyi yaz ya da hazır bir tanesini seç

    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.

  2. Ne anlama geldiğini oku

    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.

  3. Sonraki çalışma zamanlarını doğrula

    Saat dilimini seç ve görevin gerçekten hangi tarih ve saatlerde çalışacağını gör. Tahmin etmek yerine takvimin kendisine bakmış olursun.

  4. Crontab satırını kopyala

    Ç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.

Beş alan, tek satır

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
1Dakika0-59Saatin kaçıncı dakikasında çalışacağı.
2Saat0-23Gece yarısı 0, öğlen 12’dir. 24 diye bir değer yoktur.
3Ayın günü1-31Ayın kaçıncı günü. Olmayan bir gün yazarsan görev hiç çalışmaz.
4Ay1-12JAN, FEB gibi üç harfli kısaltmalar da kabul edilir.
5Haftanın günü0-7Pazar hem 0 hem 7’dir. MON, TUE gibi kısaltmalar da yazılabilir.

Yıldız, virgül, tire ve eğik çizgi

İş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-5Aralı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.

Cron’un en eski tuzağı: gün alanları VEYA ile birleşir

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ısayollar ve saniyeli biçim

Kısayol Karşılığı Ne zaman çalışır?
@yearly0 0 1 1 *Yılda bir kez, 1 Ocak gece yarısı.
@monthly0 0 1 * *Her ayın ilk günü gece yarısı.
@weekly0 0 * * 0Her pazar gece yarısı.
@daily0 0 * * *Her gün gece yarısı.
@hourly0 * * * *Her saat başı.
@rebootSunucu 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.

Saat dilimi meselesi

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.

Öne çıkan özellikler

İfadeyi Türkçe okur

Yazdığın ifadenin ne zaman çalışacağını düz bir cümleyle söyler; alan alan tahmin etmene gerek kalmaz.

Sonraki on çalışma

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.

Saat dilimi seçilebilir

Sunucun hangi saat dilimindeyse onu seç; listedeki saatler o dilimin duvar saatine göre çıkar.

Hatayı alanıyla söyler

Geçersiz bir ifade yazdığında hangi alanın, hangi parçasının ve neden kabul edilmediğini yazar.

Crontab satırını hazırlar

Komutunu yaz, aracın ürettiği tam satırı kopyala ve doğrudan crontab dosyana yapıştır.

Sunucuya hiçbir şey gitmez

Çözümleme ve hesaplama tarayıcında yapılır. Yazdığın ifade ve komut bize ulaşmaz, hiçbir yerde saklanmaz.

Sıkça Sorulan Sorular

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.

Kolayca hayalindeki işe kavuş!

Şimdi Kayıt Ol
Kolayca Üye Ol
Yazılım Bilgini Göster
Teklifleri Değerlendir