Cron İfade Çözümleyici preview

Cron İfade Çözümleyici

Gorsel ayristiriciemizla cron ifadelerini anlayin. Insan tarafindan okunabilir bir aciklama ve bir sonraki zamanlanmis yurutme zamanlarini gormek icin bir cron ifadesi girin.

Öne çıkan özellikler

  • İnsan tarafından okunabilir cron açıklamaları
  • Sonraki 5 çalıştırma zamanı önizlemesi
  • Yaygın hazır ifadeler
  • Görsel alan dökümü

Guide

Cron, Unix benzeri işletim sistemlerinde komutları veya betikleri belirli aralıklarla çalıştırmak için kullanılan zaman tabanlı bir iş zamanlama sistemidir. Bir cron ifadesi, beş alan kullanarak bir zamanlama tanımlayan kompakt bir dizedir: dakika, saat, ayın günü, ay ve haftanın günü. Hesaplamada en yaygın kullanılan zamanlama biçimlerinden biri olmasına rağmen, cron ifadelerini bir bakışta okumak oldukça zordur. Bu kılavuz, sözdizimini ayrıntılı olarak, ifadelerin nasıl okunup yazılacağını, yaygın desenleri ve pratik kullanım durumlarını ele almaktadır. Standart bir cron ifadesinin beş alanı soldan sağa sıralanır: dakika (0-59), saat (0-23), ayın günü (1-31), ay (1-12) ve haftanın günü (0-7, hem 0 hem de 7 Pazar'ı temsil eder). Her alan belirli değerleri, aralıkları, listeleri ve özel karakterleri kabul eder. 30 14 * * 1-5 gibi eksiksiz bir ifade, Pazartesi'den Cuma'ya kadar her gün 14:30'da (2:30 PM) anlamına gelir. WebRecast cron ayrıştırıcısı bu ifadeleri düz İngilizceye çevirir ve sonraki zamanlanmış yürütme zamanlarını gösterir. Yıldız işareti (*), her olası değer anlamına gelen joker karakterdir. Dakika alanında, * her dakika anlamına gelir. Ay alanında, * her ay anlamına gelir. Beş alanın tümü yıldız işareti olduğunda (* * * * *), iş her günün her saatinin her dakikasında çalışır. Bu en basit cron ifadesidir ve bir şeyi bu sıklıkta çalıştırmayı düşünmüyorsanız üretimde en tehlikelilerinden biridir. Eğik çizgi karakteri (/) adım değerlerini belirtir. Dakika alanında */5 her 5 dakikada bir (0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55) anlamına gelir. Saat alanında */2 her 2 saatte bir (0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22) anlamına gelir. Adımları aralıklarla birleştirebilirsiniz: dakika alanında 1-30/5, ilk yarım saat içinde her 5 dakikada bir (1, 6, 11, 16, 21, 26) anlamına gelir. Adımlar, her değeri listelemeden düzenli aralıklar oluşturmayı kolaylaştırır. Virgül (,) belirli değerlerin bir listesini oluşturur. Ayın günü alanında 1,15 ayın 1'i ve 15'i anlamına gelir. Dakika alanında 0,30 saatin başlangıcında ve 30 dakika geçmişte anlamına gelir. Haftanın günü alanında (cron uygulamanız adları destekliyorsa) MON,WED,FRI Pazartesi, Çarşamba ve Cuma anlamına gelir. Listeler, zamanlamanız düzenli bir aralık izlemediğinde kullanışlıdır. Tire (-) bir aralık tanımlar. Saat alanında 9-17 saat 9'dan 5 PM'ye kadar her saat anlamına gelir. Haftanın günü alanında 1-5 Pazartesi'den Cuma'ya kadar anlamına gelir. Aralıklar dahildir, yani her iki uç nokta da dahil edilir. Aralıkları adımlarla birleştirebilirsiniz: 0-23/2 gün boyunca her saat başı anlamına gelir ve haftanın günü alanında 1-5 ile dakika alanında */10, hafta içi her 10 dakikada bir anlamına gelir. Bazı cron uygulamaları ek karakterleri destekler. Soru işareti (?), bazı sistemlerde (Quartz zamanlayıcı gibi) birini belirtmek istediğinizde diğerini değil, ayın günü veya haftanın günü için belirli bir değer olmadığını belirtmek için kullanılır. L karakteri son anlamına gelir (ayın günü alanında L ayın son günü anlamına gelir). W karakteri en yakın hafta içi gün anlamına gelir (15W, 15'ine en yakın hafta içi gün anlamına gelir). Karma işareti (#), bir hafta içi günün n'inci oluşumunu belirtir (2#3 ayın üçüncü Salı'sı anlamına gelir). Standart Unix cron bunları desteklemez, ancak Java tabanlı zamanlayıcılarda ve bulut platformu cron hizmetlerinde görülürler. Yaygın cron desenleri çoğu zamanlama ihtiyacını karşılar. Her dakika çalıştır: * * * * *. Her 5 dakikada bir çalıştır: */5 * * * *. Dakika 0'da her saat çalıştır: 0 * * * *. Her gün gece yarısı çalıştır: 0 0 * * *. Her gün 3:30 AM'de çalıştır: 30 3 * * *. Her hafta Pazar günü gece yarısı çalıştır: 0 0 * * 0. Her ayın 1'inde gece yarısı çalıştır: 0 0 1 * *. Hafta içi 9 AM'de çalıştır: 0 9 * * 1-5. Hafta içi çalışma saatlerinde her 15 dakikada bir çalıştır: */15 9-17 * * 1-5. Cron ayrıştırıcı aracı, hızlı başvuru için bu yaygın hazır ayarları içerir. Saat dilimi işleme, cron ifadesinin kendisinin ele almadığı kritik bir değerlendirmedir. Bir cron ifadesi bir zaman belirtir, ancak hangi saat diliminde? Yerel bir sunucuda cron tipik olarak sunucunun sistem saat diliminde çalışır. Bulut platformları (AWS CloudWatch, Google Cloud Scheduler, Azure Logic Apps) saat dilimini açıkça belirtmenize olanak tanır. Küresel bir kitleye hizmet veren veya bulut altyapısında çalışan işleri zamanlarken, cron ifadelerinizin hangi saat dilimine referans verdiğini her zaman doğrulayın ve belgeleyin. 0 9 * * * için zamanlanmış bir iş, sunucunun saat diliminde 9 AM anlamına gelir; bu UTC, yerel saatiniz veya tamamen başka bir şey olabilir. Gün ışığından yararlanma saati, cron zamanlamaları için özel durumlar yaratır. Saatler ileri alındığında, 2:00 AM ile 3:00 AM arasındaki saat var olmaz. İlkbahar geçişi sırasında 2:30 AM için zamanlanmış bir iş, cron uygulamasına bağlı olarak atlanabilir veya 3:00 AM'de çalıştırılabilir. Saatler geri alındığında, 1:00 AM ile 2:00 AM arasındaki saat iki kez oluşur. Bu dönem sırasında zamanlanmış bir iş, uygulamaya bağlı olarak iki kez veya bir kez çalışabilir. Cron zamanlamaları için UTC kullanmak DST sorunlarını tamamen önler, bu nedenle birçok üretim sistemi UTC'de standartlaşır. Örtüşen yürütmeler, bir işin tamamlanmasının zamanlanmış çalıştırmalar arasındaki aralıktan daha uzun sürmesi durumunda oluşur. Bir iş her 5 dakikada bir zamanlanır ama bazen 8 dakika sürerse, sonraki yürütme önceki bitmeden başlar. Bu, kaynak çekişmesine, veri bozulmasına veya yinelenen işlemeye neden olabilir. Cron sisteminin kendisi örtüşen yürütmeleri önlemez. Çözümler, kilit dosyaları kullanmayı (iş başlangıçta bir kilit dosyası kontrol eder ve varsa çıkar), flock (bir dosya kilitleme yardımcı programı) kullanmayı veya yerleşik eşzamanlılık kontrolü olan bir iş zamanlayıcı kullanmayı içerir. Cron işlerini günlüğe kaydetme ve izleme, üretim güvenilirliği için esastır. Sessizce başarısız olan bir cron işi, hiç çalışmayan bir işten daha kötüdür. İş çıktısını günlük dosyalarına yönlendirmek için cron komutuna >> /var/log/myjob.log 2>&1 ekleyin. Bu, hem standart çıktıyı hem de hataları yakalar. Bir iş başarısız olduğunda veya zamanlamada çalıştığında sizi uyarmak için izleme kurun. Healthchecks.io ve Cronitor gibi hizmetler, cron işiniz tamamlandığında bir URL'ye ping atan ölü adam anahtarı izlemesi sağlar ve ping zamanında gelmezse uyarılırsınız. Etkileşimli kabuğunuz ile cron ortamı arasındaki ortam farkları birçok cron işi hatasına neden olur. Cron bir iş çalıştırdığında, etkileşimli oturumunuzun sahip olduğu PATH girişleri, ortam değişkenleri ve kabuk yapılandırmasından yoksun olabilecek minimal bir ortam kullanır. Bir iş manuel çalıştırdığınızda çalışırsa ama cron'da başarısız olursa, olası neden eksik bir ortam değişkeni veya cron PATH'inde olmadığı için bulunamayan bir yürütülebilir dosyadır. Çözümler, tüm yürütülebilir dosyalar için mutlak yollar kullanmayı (python3 yerine /usr/bin/python3), crontab'ın üstünde ortam değişkenlerini açıkça ayarlamayı veya iş betiğinin başında kabuk profilinizi kaynaklandırmayı içerir. crontab komutu cron zamanlamanızı yönetir. crontab -e, crontab dosyanızı bir düzenleyicide açar. crontab -l, mevcut crontab girişlerinizi listeler. crontab -r, tüm crontab'ınızı kaldırır (dikkatli kullanın). crontab dosyasındaki her satır ya bir yorumdur (# ile başlayan), bir ortam değişkeni atamasıdır (MAILTO=admin@example.com) ya da bir zamanlama girişidir (çalıştırılacak komutu izleyen beş zaman alanı). MAILTO değişkeni, iş çıktısını bir e-posta adresine gönderir; bu, küçük kurulumlar için kullanışlı bir izleme mekanizmasıdır. Sistem geneli cron, /etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.weekly/ ve /etc/cron.monthly/ içindeki dosyalar aracılığıyla yönetilir. Bu dizinler, zamanlama ile komut arasında hangi kullanıcı hesabının işi çalıştırdığını belirten bir kullanıcı adı alanı içeren biraz farklı bir biçim kullanır. Sistem paketleri ve sunucu yönetim betikleri tipik olarak bireysel kullanıcı crontab'ları yerine bu konumları kullanır. Cron'a modern alternatifler, rastgele gecikmeler, bağımlılık yönetimi ve daha iyi günlük entegrasyon gibi özellikler sunan Linux sistemlerinde systemd zamanlayıcılarını içerir. Bulut platformları kendi zamanlama hizmetlerini sunar: AWS EventBridge (eski adıyla CloudWatch Events), Google Cloud Scheduler, Azure Logic Apps ve Kubernetes CronJobs. Bu hizmetler cron ifade sözdizimini kullanır ama yeniden deneme ilkeleri, ölü mektup kuyrukları ve izleme panoları gibi özellikler ekler. Tüm bu modern araçlar aynı beş alanlı biçimi kullandığından cron ifade sözdizimini anlamak hala esastır. Kubernetes CronJobs, cron zamanlamasını konteyner orkestrasyonuyla birleştirdiğinden özel bahsi hak eder. Bir Kubernetes CronJob, zamanlamada yeni bir pod oluşturur, işi bir konteynerde çalıştırır ve iş tamamlandığında temizler. Zamanlama alanı standart cron sözdizimini kullanır. Ek yapılandırma, eşzamanlılık ilkesini (Allow, Forbid veya Replace), başarılı ve başarısız iş geçmişi sınırlarını, başlama son tarih saniyelerini ve askıya alma işlevselliğini kontrol eder. İş yüklerinizi Kubernetes'te çalıştırıyorsanız, CronJobs yinelenen görevleri zamanlamanın standart yoludur. WebRecast cron ayrıştırıcısı ifadenizi alır ve üç şey çıktılar: zamanlamanın insan tarafından okunabilir bir açıklaması (hafta içi her 15 dakikada bir gibi düz bir dilde), her alanın hangi değerlerle eşleştiğini gösteren bir dökümü ve geçerli tarih ve saate dayalı sonraki 5 zamanlanmış yürütme zamanı. Bu, ifadenizi üretimde dağıtmadan önce niyet ettiğinizi yaptığını doğrulamayı kolaylaştırır. İfadenizi girin, açıklamayı okuyun, sonraki yürütme zamanlarını kontrol edin ve zamanlamanın gereksinimlerinize uygun olduğunu onaylayın. Dağıtımdan önce cron ifadelerini test etmek, gerçek sonuçları olabilecek zamanlama hatalarını önler. Günlük yerine saatlik çalışan bir yedekleme işi disk alanını boşa haricar. Aylık yerine günlük çalışan bir faturalandırma işi müşterileri fazla ücretlendirir. Saatte bir yerine her dakika çalışan bir temizleme işi gereksiz sunucu yükü oluşturur. Cron ifadenizi crontab'ınıza veya bulut zamanlayıcı yapılandırmanıza eklemeden önce her zaman bunun gibi bir araç kullanarak ayrıştırın ve doğrulayın. Birkaç saniyelik doğrulama, saatlerce süren hata ayıklamayı veya daha kötüsünü önleyebilir.

Sık sorulan sorular

Cron ifadesi nedir?

Cron ifadesi, tekrarlayan görevler için bir zamanlama tanımlayan 5 alanlı (dakika, saat, gün, ay, hafta içi gün) bir dizgidir.

cron'da */5 ne anlama gelir?

*/5 söz dizimi 'her 5. aralık' anlamına gelir. Örneğin, dakika alanında */5 her 5 dakika demektir.

İlgili rehberler

İlgili WebRecast bölümleri