Cron Job
- Türkçe karşılığı
- zamanlanmış görev
- Okunuşu
- kron cob
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Cron job, beş alanlı bir cron ifadesiyle tanımlanan ve her gece 02.00 gibi tekrarlayan bir zamanlamayla otomatik çalışan bir komut veya betiktir.
Cron job nedir?
Cron job, bir kişi ya da bir istek tarafından başlatılmak yerine belirli bir zamanlamaya göre çalışan görevdir. Adı, Linux ve macOS gibi Unix benzeri sistemlerde 1970'lerden beri var olan ve her dakika zamanlanmış bir işin vakti gelip gelmediğini kontrol eden bir arka plan servisi olan cron'dan gelir. Her kullanıcının işleri, cron tablosunun kısaltması olan crontab adlı bir dosyada listelenir ve bu dosya crontab -e ile düzenlenir.
Bir crontab'daki her satır bir zamanlama ve ardından çalıştırılacak komuttan oluşur. Zamanlama, beş alanlı bir cron ifadesidir: dakika, saat, ayın günü, ay ve haftanın günü; burada * her değer anlamına gelir. Örneğin 0 2 * * * her gün 02.00, */15 * * * * ise her 15 dakika demektir. Aynı söz dizimi klasik cron'un çok ötesinde, Kubernetes CronJob'larında, CI/CD hatlarında ve bulut ile serverless zamanlayıcılarda da kullanılır.
Cron job, çaldığında işi sizin yerinize de yapan bir çalar saat gibidir. Tipik kullanımlar arasında gece veritabanı yedekleri, günlük rapor e-postaları, süresi dolmuş oturumları ve geçici dosyaları temizleme, TLS sertifikalarını yenileme ve diğer sistemlerden veri senkronize etme bulunur.
Cron job'lar sıklıkla bir mesaj kuyruğundan gelen arka plan işleriyle karıştırılır: cron job zamanla tetiklenir, kuyruktaki iş ise bir kullanıcının dosya yüklemesi gibi bir olayla tetiklenir. Cron job'ların yaygın tuzakları da vardır. Aksi yapılandırılmadıkça sunucunun saat diliminde çalışırlar, günlüğe kaydedip izlemediğiniz sürece hataları fark edilmez ve aynı işi birkaç sunucuda zamanlamak işin birden fazla kez çalışmasına yol açabilir; bu yüzden işler idempotent olmalı ya da bir kilitle korunmalıdır.
Önemli noktalar
- Cron job, bir komutu zamana dayalı bir zamanlamayla otomatik çalıştırır.
- Zamanlamalar beş alandan oluşur: dakika, saat, ayın günü, ay ve haftanın günü.
0 2 * * *her gün 02.00 demektir;*/15 * * * *her 15 dakika demektir.- Cron söz dizimi Kubernetes, CI/CD araçları ve bulut zamanlayıcıları tarafından da kullanılır.
- İşleri loglayıp izleyin, saat dilimlerine dikkat edin ve işleri iki kez çalışmaya karşı güvenli hale getirin.
Örnek
# Edit the current user's crontab
crontab -e
# Format: minute hour day-of-month month day-of-week command
# Back up the database every day at 2:00 a.m.
0 2 * * * /usr/local/bin/backup-db.sh >> /var/log/backup.log 2>&1
# Delete temporary files older than an hour, every 15 minutes
*/15 * * * * find /tmp/myapp -type f -mmin +60 -delete
# Send a weekly report every Monday at 9:00 a.m.
0 9 * * 1 /usr/local/bin/send-report.sh
# List the jobs currently scheduled
crontab -lSık sorulan sorular
Cron'da * * * * * ne anlama gelir?
Beş yıldız, her günün her saatinin her dakikası demektir. Alanlar dakika, saat, ayın günü, ay ve haftanın günüdür; * ise o alan için herhangi bir değer anlamına gelir.
Cron ile crontab arasındaki fark nedir?
Cron, zamanlanmış işleri çalıştıran arka plan servisidir; crontab ise bu işleri ve zamanlamalarını listeleyen dosyadır. crontab komutu bu dosyayı düzenlemek ve görüntülemek için kullanılır.
Bir cron job'u her 5 dakikada bir nasıl çalıştırırım?
Adım söz dizimini kullanın: */5 * * * * ve ardından komutunuz. Dakika alanındaki */5, 0. dakikadan başlayarak her beşinci dakika demektir.
İlgili sayfalar
- LinuxDevOps ve Bulut, s. 31Linux, çoğu sunucuyu, bulutu, konteyneri ve Android telefonu çalıştıran, genellikle dağıtım olarak paketlenen açık kaynaklı bir işletim sistemi çekirdeğidir.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- ServerlessDevOps ve Bulut, s. 46Serverless, sağlayıcının kodu talep üzerine çalıştırıp sunucuları yönettiği, otomatik ölçeklediği ve yalnızca gerçek kullanıma ücret aldığı bulut modelidir.
- Mesaj KuyruğuBackend ve API'ler, s. 28Mesaj kuyruğu, bir servisten gelen mesajları bir başkası işlemeye hazır olana kadar saklayan ve sistemin parçalarını eşzamansız çalıştıran bir bileşendir.
- IdempotencyBackend ve API'ler, s. 23Idempotency, bir işlemin bir kez de çalışsa çok kez de çalışsa aynı sonucu üretmesi özelliğidir; böylece bir isteğin yanlışlıkla tekrarlanması güvenli olur.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin