Cron, Unix benzeri işletim sistemlerinde bulunan zamana dayalı bir iş planlama hizmetidir. Kullanıcılar işleri (komutlar veya komut dosyaları) sabit zamanlarda, tarihlerde veya aralıklarla düzenli olarak çalışacak şekilde zamanlar.
Cron'un Kökeni ve Erken Tarihi
Cron'un ilk uygulaması Unix Sürüm 7'ye kadar uzanıyor. “Cron” terimi Yunanca zaman anlamına gelen “chronos” kelimesinden gelir. Unix'in 1979'da piyasaya sürülen bu sürümü, belirli aralıklarla görevleri yürüten basit bir cron programına sahipti. Cron'un işlevselliği daha sonra 1987 yılında Paul Vixie tarafından genişletildi. Vixie Cron olarak bilinen bu sürüm, günümüzde en yaygın olarak yüklenen sürümdür ve genellikle “Cron” denildiğinde anılan sürümdür.
Cron Kavramını Genişletmek
Cron, kullanıcıların sistem bakımını veya yönetimini otomatikleştirmesine olanak tanır; ancak genel amaçlı yapısı, onu İnternetten dosya indirmek ve düzenli aralıklarla e-posta indirmek gibi şeyler için kullanışlı kılar. Cron ortamı, cron işlerinin normal kabuk ortamından çalıştırıldığı bir sanal alan gibidir.
Her kullanıcının kendi crontab'ı olabilir ve bunlar /var/spool/ dosyasındaki dosyalar olmasına rağmen doğrudan düzenlenmesi amaçlanmamıştır. Cron ifadelerinin sözdizimi iki ana sözdizimi türüne ayrılabilir: Unix cron sözdizimi ve cron ifadesi sözdizimi veya kuvars cron sözdizimi olarak bilinen daha karmaşık bir sözdizimi.
Cron'un İç Yapısı ve Nasıl Çalışır?
Cron, "crontab" dosyası olarak bilinen basit ama güçlü bir yapılandırma dosyası temelinde çalışır. Bu dosya, beş saat ve tarih alanından oluşan, çalıştırılacak her görev için bir satır ve ardından belirtilen zamanlarda çalıştırılacak bir komut içerir.
Beş alan şunları temsil eder:
- Saatten sonraki dakikalar (0 – 59)
- Günde saat (0 – 23)
- Aydaki günler (1 – 31)
- Bir yıldaki aylar (1 – 12)
- Haftanın günleri (0 – 7, 0 ve 7 Pazar'dır)
Komut alanı, ilk beş alanda belirtilen zamanlarda çalıştırılacak görevi içerir.
Cron'un Temel Özellikleri
Cron'un temel özellikleri şunları içerir:
- Görevlerin arka planda düzenli aralıklarla otomatik olarak çalıştırılmasına olanak tanır.
- Görevleri (komut dosyaları veya komutlar) çeşitli zaman birimleriyle planlamak için esnek bir platform sağlar.
- Her kullanıcının kendi crontab dosyası olabilir.
- Cron işleri dakikaya, saate, haftanın gününe, ayın gününe ve yılın ayına göre çalışacak şekilde planlanabilir.
- Cron, çeşitli sistem görevlerini otomatikleştirmenin basit ve etkili bir yolunu sunar.
Cron Türleri
Cron işleri genel olarak şu şekilde sınıflandırılabilir:
Tip | Tanım |
---|---|
Yeniden başlat | Başlangıçta bir kez çalışır. |
Anakron | Gün cinsinden belirtilen aralıklarla çalışır. |
Sistem Cron'u | /etc/crontab ve /etc/cron.d/ dizininde saklanan bu dosyaların sistem çapında olması amaçlanmıştır. |
Kullanıcı Cron'u | Her kullanıcı kendine ait olabilir ve /var/spool/cron/crontabs/ dizininde saklanır. |
Cron Kullanımı, Sorunları ve Çözümleri
Cron görevleri otomatikleştirmek için kullanışlıdır ancak dikkatli kullanılmazsa sorunlara yol açabilir. Örneğin, yanlış yapılandırılmış bir cron işi yüksek CPU kullanımına yol açabilir. Ayrıca cron, varsa yalnızca işlerinin çıktısını, işleri çalıştırdığı kullanıcıya e-postayla gönderir. Bu, düzenli olarak kontrol edilmediği takdirde gözden kaçan hatalara neden olabilir.
Bu sorunlara yönelik ortak çözümler şunlardır:
- Yüksek CPU kullanımını düzenli olarak kontrol etmek ve gereksiz işleri yeniden yapılandırmak veya durdurmak.
- Tüm komutların ve komut dosyalarının cron işleri olarak ayarlanmadan önce doğru şekilde çalıştığından emin olmak.
- Çıktıyı bir günlük dosyasına yönlendirmek veya cron işlerini daha etkili bir şekilde izlemek için bir posta sunucusu kurmak.
Benzer Araçlarla Karşılaştırmalar
Anacron ve systemd zamanlayıcılar gibi cron'a benzer başka görev zamanlayıcılar da vardır. Bunlar arasındaki temel farklar şu şekilde özetlenebilir:
Alet | Tanım |
---|---|
Cron | Günün belirli saatlerinde çalıştırılacak görevler için uygundur. Kaçırılan işleri çalıştırmaz. |
Anakron | Günlük/haftalık/aylık bir kez çalıştırılacak görevler için uygundur. Makine tekrar çevrimiçi olduğunda kaçırılan işleri çalıştıracaktır. |
Sistemd | Daha fazla seçenek sunması ve modern Linux dağıtımlarıyla iyi entegre olması nedeniyle daha karmaşık senaryolar için uygundur. |
Gelecek Perspektifleri ve İlgili Teknolojiler
Unix tabanlı sistemler gelişmeye devam ettikçe Cron da gelişmeye devam ediyor. Systemd gibi daha gelişmiş görev zamanlayıcıların ortaya çıkmasına rağmen Cron'un basitliği ve gücü, bugün yaygın kullanımda kalmasını sağlıyor.
Konteynerleştirilmiş uygulamalara ve mikro hizmet mimarilerine yönelik son trend, Cron'u kullanmanın yeni yollarını da beraberinde getirdi. Örneğin, popüler bir konteyner düzenleme platformu olan Kubernetes, Unix tabanlı sistemlerdeki Cron'a benzeyen, CronJobs olarak bilinen bir özelliğe sahiptir.
Proxy Sunucuları ve Cron
Proxy sunucuları, belirli görevleri otomatikleştirmek için Cron ile birlikte etkili bir şekilde kullanılabilir. Örneğin, bir proxy sunucusu aracılığıyla bir web sitesine veya API'ye düzenli olarak erişmesi gereken bir komut dosyanız varsa, bu komut dosyasını belirli aralıklarla çalıştırmak için bir cron işi ayarlayabilirsiniz.
Cron ayrıca proxy'leri belirli aralıklarla döndürmek için de kullanılabilir, böylece herhangi bir proxy'nin engellenme olasılığı azalır. Örneğin, OneProxy'nin proxy hizmetleri, veri kazıma, sosyal medya görevlerini otomatikleştirme ve daha fazlası gibi görevler için Cron ile otomatikleştirilebilir.
İlgili Bağlantılar
Cron hakkında daha fazla bilgi için aşağıdaki kaynakları göz önünde bulundurun: