* * * * * İfadesi
* * * * * cron ifadesi her dakika başında çalışır: 00:00, 00:01, 00:02 ve böyle devam eder, saatte 60 kez, günde 1440 kez. Herhangi bir cron alanındaki *, “bu alandaki her geçerli değer” anlamına gelir. Beş alanın tümü * olarak ayarlandığında filtre yoktur: iş mümkün olan her zaman sınırında çalışır.
Bu, cron’un desteklediği maksimum frekanstır. Dakika alanı cron’un en ince ayrıntı düzeyidir, bu nedenle * * * * * cron’un alabileceği en hızlı değerdir.
Dakikada Bir Ne Zaman Mantıklı
Kuyruk işçileri
Bazı sistemler, bir iş kuyruğunu boşaltan bir işçiyi başlatmak için cron kullanır. İşler sürekli geliyorsa ve gecikme önemliyse, dakikada bir tetikleyici kuyruğun uzun süre boş kalmamasını sağlar.
Gerçek zamanlı izleme
Kalıcı bir izleme aracısı kuramıyorsanız, bir sağlık kontrolü noktasını kontrol eden veya bir metrik kaydeden dakikada bir cron, pragmatik bir geçici çözümdür. 60 saniye içinde oluşan ve düzelen hataları yakalamaz, ancak kritik bir hizmet için her 5 dakikada bir yoklamaktan iyidir.
Hafif sinyal gönderme
Her dakika bir dosyaya veya veritabanına Unix zamanı yazmak yaygın bir canlılık kontrolüdür.
Ne Zaman Aşırı
Doğal toplu iş sınırı olan her şey
Rapor oluşturma, veri senkronizasyonu veya bildirim gönderme gibi işler için kullanıcıların gerçekten her dakika güncellemeye ihtiyacı olup olmadığını sorgulayın.
Anlamlı başlatma maliyeti olan işler
Veritabanına bağlanan, yapılandırmayı uzak kaynaktan yükleyen veya harici API’ye kimlik doğrulaması yapan bir iş, bu maliyeti günde 1440 kez öder.
Bazen 60 saniyeden uzun süren işler
Standart cron, önceki çalıştırmanın hala devam edip etmediğini bilmez. İş 90 saniye sürerse, 2. dakikada aynı anda çalışan iki örneğiniz olur.
Eşzamanlı Çalıştırmayı Önleme
Her dakika cron işi için, çalıştırma süresi 60 saniyeyi aştığında ne olacağını test edin. Standart çözüm flock:
* * * * * flock -n /tmp/myjob.lock /path/to/myjob.sh
flock -n dosyada özel bir kilit alır. Önceki bir çağrı hala kilidi tutuyorsa, yenisi hemen çıkar.
Alt Dakika Alternatifleri
systemd timer ile uyku döngüsü
Süreklidahili döngü yapan bir .service birimi ve onu başlangıçta başlatan bir .timer birimi oluşturun. Hizmet while true; do /path/to/task; sleep 10; done çalıştırır.
Uyku tabanlı çift giriş (30 saniye geçici çözümü)
İki crontab satırı:
* * * * * /path/to/job
* * * * * sleep 30 && /path/to/job
Kubernetes CronJobs
Kubernetes CronJobs, sistem cron ile aynı 1 dakika minimum değerine sahiptir. Kubernetes’te alt dakika iş yükleri için CronJob yerine döngülü bir Deployment kullanın.