Cron İfadesi Çözümleyici ve Oluşturucu
Unix, Spring, Quartz ve AWS cron ifadelerini okuyun, sonraki çalışma zamanlarını istediğiniz saat diliminde görün veya ifadeyi alan alan oluşturun.
Zamanlama
Alanların dökümü
| Alan | İfade | Değerler |
|---|
Sonraki çalışma zamanları
Görsel oluşturucu
Her alanın nasıl tekrarlanacağını seçin. “Belirli değerler” 1,15 veya MON,WED gibi bir liste alır; “Aralık” 9-17 gibi başlangıç-bitiş alır; “Her N” adımı alır.
Özel karakterler
| * | Alanın tüm değerleri. |
| , | Değer listesi, ör. 1,15,30. |
| - | Aralık, ör. 9-17 veya MON-FRI. |
| / | Adım, ör. */15 = 15'te bir; 5/15 = 5'ten başlayarak 15'te bir (Unix cron'da yok). |
| ? | Belirli değer yok. Quartz ve AWS bunu ayın günü veya haftanın günü alanında zorunlu kılar. |
| L | Son: ayın gününde L = son gün; L-3 = ondan üç gün önce; haftanın gününde 5L = son perşembe (Quartz numaralandırması). |
| W | En yakın iş günü: 15W = ayın 15'ine en yakın iş günü; LW = ayın son iş günü. |
| # | Ayın N. haftanın günü: Quartz/AWS'de 6#3 = üçüncü cuma (1 = pazar); Spring'de 5#3 (0 = pazar). |
| @daily … | Makrolar: @yearly, @monthly, @weekly, @daily, @hourly; @reboot başlangıçta bir kez çalışır. |
Nasıl kullanılır
- Bir zamanlamayı "Cron ifadesi" alanına yazın veya yapıştırın ya da örneklerden birine tıklayın; bir örneğe tıklamak "Biçim" ayarını da "Otomatik algıla" yapar. Özet ve çalışma zamanları siz yazdıkça güncellenir.
- "Biçim" ayarını "Otomatik algıla" olarak bırakın veya ifadenin yazıldığı sistemi seçin. Otomatik algılama 5 alanı Unix, 7 alanı Quartz olarak okur. 6 alanda "?" işaretinin konumuna göre AWS'yi veya Quartz'ı seçer, son alan 1970 ile 2199 arasında bir yıl içeriyorsa AWS'yi seçer, bunların dışında Spring varsayar. @weekly gibi makrolar Unix olarak okunur. İfade geçerliyse durum satırında kullanılan biçimin adı görünür.
- Her alanın neyle eşleştiğini görmek için "Zamanlama" ve "Alanların dökümü" bölümlerini okuyun, ardından "Sonraki çalışma zamanları" altındaki tarihleri kontrol edin. "Saat dilimi" başlangıçta tarayıcınızın saat dilimini gösterir; gerekirse başka bir dilim seçin ve "Gösterilecek çalışma sayısı" altında 5, 10 veya 20'yi seçin. UTC dışındaki dilimlerde her çalışmanın UTC saati de gösterilir.
- İfadeyi kendiniz oluşturmak için "Görsel oluşturucu"yu açın, bir biçim seçin ve her alanın nasıl tekrarlanacağını belirleyin; alan bir değer istiyorsa değeri girin. "Bu ifadeyi kullan", "Oluşturulan ifade"yi "Cron ifadesi" alanına kopyalar, "Biçim" ayarını oluşturucunun biçimine getirir ve ifadeyi çözümler; böylece çalışma zamanlarını kontrol edebilirsiniz.
Sık sorulan sorular
Girdiğim ifade bir yere gönderiliyor mu?
Hayır. İfade tarayıcınızda JavaScript ile çözümlenir ve çalışma zamanları da orada hesaplanır; ifade LeedyBox'a yüklenmez.
0 0 13 * 5 neden yalnızca 13'üne denk gelen cumalarda değil, her cuma çalışıyor?
Unix cron'da ayın günü ve haftanın günü alanlarının ikisi de kısıtlandığında (hiçbiri * ile başlamıyorsa), alanlardan biri eşleştiğinde gün eşleşmiş sayılır; bu yüzden bu ifade her ayın 13'ünde ve her cuma çalışır. Araç bu kuralı Unix ifadelerine uygular ve "Zamanlama" bölümünde "biri yeterli" ibaresi görünür. Spring ifadelerinde iki alanın da eşleşmesini şart koşar; Quartz ve AWS ise iki alandan birinde "?" zorunlu tutarak bu soruyu baştan ortadan kaldırır. Unix cron'da yaygın bir çözüm, işi her cuma çalışacak şekilde zamanlamak ve tarihi işin içinde kontrol etmektir.
Pazar günü 0 mı, 1 mi, yoksa 7 mi?
Biçime bağlıdır. Unix ve Spring ifadelerinde 0 ve 7'nin ikisi de pazar, 1 ise pazartesi anlamına gelir; Quartz ve AWS'de 1 pazar, 7 cumartesidir, bu yüzden orada 1-5 pazardan perşembeye kadar demektir. Spring, Quartz ve AWS'de MON-FRI gibi gün adları kullanarak bu farktan kaçınabilirsiniz.
Crontab satırım veya AWS cron( ) ifadem neden reddediliyor?
Yalnızca zamanlama alanlarını girin. Bir crontab satırının sonundaki komut ve /etc/crontab dosyasındaki kullanıcı adı ek alan sayılır; bu yüzden araç geçersiz bir alan veya yanlış alan sayısı bildirir. AWS için cron( ) içindeki altı alanı, sarmalayıcı olmadan yapıştırın.
Bir Unix ifadesini Spring, Quartz veya AWS için nasıl yeniden yazarım?
Spring başa bir saniye alanı ekler; bu yüzden 0 9 * * 1-5, 0 0 9 * * 1-5 olur. Quartz ayrıca gün alanlarından birinde "?" ister ve pazarı 1 olarak numaralandırır; bu yüzden aynı zamanlama 0 0 9 ? * MON-FRI olur. AWS'de saniye alanı yoktur; Quartz gibi gün alanlarından birinde "?" ister ve sona bir yıl alanı ekler: 0 9 ? * MON-FRI *. Unix ifadesi iki gün alanını da kısıtlıyorsa yukarıda açıklanan "biri yeterli" kuralına dayanır; bu biçimler bu kuralı kullanmadığından genellikle iki ayrı zamanlama gerekir. Sonucu hedef biçim seçiliyken kontrol edin ve sonraki çalışma zamanlarını karşılaştırın.
Araç neden hiç çalışma zamanı bulunamadığını söylüyor?
İfade geçerlidir, ancak aracın taradığı yaklaşık 8 yıllık süre içinde eşleşen bir zaman bulunamamıştır. Tipik nedenler, 0 0 30 2 * (30 Şubat) gibi var olmayan tarihler veya yalnızca 30 çeken aylarla birleştirilmiş 31. gün ve geçmişte kalan bir yıl alanıdır. 8 yıldan daha ileride bir yıl da aynı mesajı verir, ancak bu zamanlama daha sonra yine çalışabilir. Klasik Unix cron dahil bazı zamanlayıcılar var olmayan bir tarihi uyarı vermeden kabul eder ve iş hiç çalışmaz.
Hangi saat dilimi kullanılıyor ve yaz saati uygulamasında ne oluyor?
Çalışma zamanları "Saat dilimi" altında seçilen dilime göre hesaplanır. Zamanlayıcınızın kullandığı dilimi seçin: crontab genellikle sunucunun saat dilimini izler, AWS EventBridge'deki zamanlanmış kurallar UTC kullanır, EventBridge Scheduler ise saat dilimi belirlemenize izin verir. Menüde tarayıcınızın saat dilimi, UTC ve yaygın saat dilimlerinden bir seçki bulunur; zamanlayıcınızın dilimi listede yoksa UTC farkı ve yaz saati geçiş tarihleri aynı olan bir dilim seçin. Saatler ileri alındığında atlanan bir zamana denk gelen çalışma listede yer almaz, saatler geri alındığında iki kez yaşanan bir zaman ise bir kez listelenir. Cron hizmetleri bu saatleri farklı şekillerde ele alır; örneğin cronie, atlanan bir saatteki işi değişiklikten hemen sonra çalıştırabilir. Zamanlayıcınızın davranışını kontrol edin veya yaz saati uygulaması olmayan UTC'yi kullanın.