- Crond servisinin nasıl çalıştığı ve crontab dosyası kullanılarak görevlerin nasıl yönetildiği.
- Ayrıntılı sözdizimi ve özel karakterlerin kullanımı, hassas programlama işlemleri için gereklidir.
- TAR ile yedekleme komut dosyalarının uygulanması ve sistem bakımının otomasyonu.
- Modern alternatifler arasında systemd zamanlayıcıları ve süreç yönetimi için grafiksel araçlar yer almaktadır.
İster yakın zamanda Linux'a geçmiş olun ister bir süredir kendi sunucunuzu yönetiyor olun, bazı görevlerin manuel olarak yapılmasının gerçekten zahmetli olduğunu fark etmişsinizdir. Geçici dosyaları temizlemekten verilerinizin yedeklemelerle güvende olmasını sağlamaya kadar, bu süreçleri otomatikleştirmek , hayal kırıklığını önlemek ve basit bir hatanın bir aylık emeğinizi yok etmesini engellemek için çok önemlidir.
Bu sorunu çözmek için, UNIX benzeri sistemlerde Cron adı verilen efsanevi bir araç bulunur. Temelde, komutlar için bir alarm saati gibidir; belirttiğiniz tam saatte komut dosyalarını veya uygulamaları başlatır ve siz kahve içerken veya görevin varlığını tamamen unuturken arka planda çalışır.
Cron tam olarak nedir ve nasıl çalışır?
Cron'dan bahsettiğimizde aslında crond adlı bir arka plan işleminden bahsediyoruz . Linux dünyasında, bir arka plan işlemi, sistem başlatıldığı andan itibaren kullanıcı arayüzü olmadan arka planda çalışan bir süreçtir. Görevi monoton ama hayati önem taşır: her dakika yapılandırma dosyalarını kontrol ederek mevcut saat ve tarihle eşleşen zamanlanmış cron işleri olup olmadığını kontrol eder.
Her şeyin sorunsuz çalışması için sistem saatinin doğru ayarlanması çok önemlidir. Saat veya saat dilimi yanlışsa, yedeklemeleriniz yanlış zamanda çalışacaktır. Bu nedenle, sistemde herhangi bir zaman tutarsızlığı olmadığından emin olmak için NTP sunucularıyla senkronizasyonun doğru olduğunu doğrulamak amacıyla `timedatectl` komutunu kullanmanız önerilir.
Crontab dosyası: Sihrin gerçekleştiği yer
Eğer Cron bir motor ise, crontab da komut haritasıdır . Çalıştırmak istediğimiz şeyleri ve ne zaman çalıştıracağımızı yazdığımız bir metin dosyasıdır. İlginçtir ki, tek bir dosya yoktur; sistemde /etc/crontab adresinde global bir crontab bulunur, ancak her kullanıcının kendi crontab dosyası olabilir , bu da farklı kişilerin her zaman yönetici ayrıcalıklarına ihtiyaç duymadan görevlerini planlamalarına olanak tanır.
Bu görevleri yönetmek için, düzenleme yapmak için `crontab -e` , etkin olanları listelemek için `crontab -l` ve her şeyi silip sıfırdan başlamak istiyorsak `crontab -r` komutunu kullanıyoruz . Kritik çekirdek dosyalarına dokunmadan sistem bakımını organize etmenin çok temiz bir yoludur.
Cron sözdiziminin incelenmesi
Bir görevi planlamak için, beş zaman alanını ve ardından komutu içeren çok katı bir sırayı izlemeniz gerekir. Sıralama şu şekildedir: dakika, saat, ayın günü, ay ve haftanın günü . Örneğin, 0 19 * * 0 girersek, sisteme her Pazar saat 19:00'da etkinleşmesini söylüyoruz.
Hayatımızı kolaylaştırmak için, şunlar var: özel karakterler Bu da bize tam kontrol sağlıyor. Yıldız işareti (*) "her zaman" veya "herhangi bir değer" anlamına gelirken, eğik çizgi (/) aralıkları tanımlamak için kullanılır, örneğin; */10 Her on dakikada bir bir şey çalıştırmak için. Tire (-) aralıkları tanımlar ve virgül (,) belirli değerleri listelemenizi sağlar. Ek olarak, şunlar da vardır: önceden tanımlanmış kısayollar Örneğin, @daily, @weekly veya @reboot gibi etiketler, en sık karşılaşılan durumlar için yazmayı kolaylaştırır.
İlk yedekleme sisteminizi oluşturma
En kullanışlı uygulamalardan biri veri yedeklemesidir. Bunun için TAR aracı ideal bir yerel seçenektir . Dosyalarımızı paketleyen, dosya adına geçerli tarihi atayan ve en önemlisi, yedeklemenin gigabaytlarca gereksiz dosyaya dönüşmemesi için önbellek veya çöp kutusu gibi gereksiz klasörleri hariç tutan bir Bash betiği oluşturabiliriz.
Komut dosyası oluşturulduktan sonra (örneğin, /usr/local/bin/mybackup adresinde) ve chmod +x komutuyla çalıştırma izinleri verildikten sonra , kök crontab dosyasına bir satır eklemeniz yeterlidir. Bu sayede sunucu yedeklemeyi otomatik olarak gerçekleştirecek ve hatta sabit diskin dolmasını önlemek için iki haftadan eski yedeklemeleri otomatik olarak silmek üzere komut dosyasını zamanlayabilirsiniz .
Gelişmiş yönetim ve mutlak yollar
Yeni başlayanlar arasında çok yaygın bir hata, komut dosyalarında göreceli yollar kullanmaktır. Cron çok sınırlı bir ortamda çalışır ve konumunuzu bilmez, bu nedenle her zaman mutlak yollar kullanmalısınız (örneğin ./script.sh yerine /home/user/script.sh). Aksi takdirde, komut sessizce başarısız olur ve verilerinizi kurtarmanız gerektiğinde hoş olmayan bir sürprizle karşılaşırsınız.
Körlemesine ilerlemekten kaçınmak için hayati önem taşır. Çıktıyı günlük dosyalarına yönlendirinOperatörü kullanarak >>> /var/log/backup.log 2>&1Hem başarıları hem de başarısızlıkları bir dosyaya kaydedebiliriz. Bu sayede, bir sorun çıktığında, ne olduğunu tahmin etmeye gerek kalmadan tam olarak anlamak için sadece günlük dosyasına bakmamız yeterli olur.
Performans ve en iyi uygulamalar üzerindeki etki
Sisteme her saniye çalışan görevler yüklemek tavsiye edilmez, çünkü bu CPU ve RAM kullanımında ani artışlara neden olabilir. En akıllı yaklaşım, veritabanı güncellemeleri veya büyük yedeklemeler gibi kaynak yoğun işlemleri, kullanıcıları etkilememek için sabah erken saatlerde veya yoğun olmayan zamanlarda planlamaktır .
Bir görevin beklenenden uzun sürmesi durumunda diğer bir görevle çakışmasını önlemek için, aynı komut dosyasının eş zamanlı olarak yürütülmesini engelleyen `flow` kullanılması önerilir . Ayrıca, Cron'u kimlerin kullanabileceğini kısıtlamak için yönetici, `cron.allow` ve `cron.deny` dosyalarını yapılandırarak yalnızca yetkili personelin sunucuda görev planlayabilmesini sağlayabilir.
Modern alternatifler: Systemd Zamanlayıcıları ve daha fazlası
Cron klasik bir yöntem olsa da, modern sistemler systemd zamanlayıcılarını kullanır . Bunlar çok daha güçlüdür çünkü bağımlılıkları yönetmenize, hataları daha etkili bir şekilde ele almanıza ve görevleri yalnızca saate değil, sistem olaylarına (örneğin başlatma) göre yürütmenize olanak tanır. Bunlar, /etc/systemd/system/ dizinindeki .timer ve .service dosyaları kullanılarak yapılandırılır.
Terminal kullanımında rahat olmayanlar için KCron (KDE için) gibi grafiksel seçenekler veya Webmin gibi web tabanlı araçlar mevcuttur. macOS gibi diğer işletim sistemlerinde ise, Apple ekosistemiyle çok daha derin bir entegrasyon sağlayan ve başarısız olan görevlerin otomatik olarak yeniden başlatılmasına olanak tanıyan launchd kullanılır.
Sunucularla ilgili diğer gerçek dünya kullanım örnekleri
Yedeklemelerin ötesinde, Cron sisteminizi temiz tutmak için mükemmel bir araçtır . Eski günlükleri haftalık olarak silmek veya çökmeye eğilimli hizmetleri yeniden başlatmak için görevler zamanlayabilirsiniz. Ayrıca, farklı makineler arasında rsync kullanarak veri senkronizasyonu için de gereklidir ve bilgilerin insan müdahalesi olmadan çoğaltılmasını sağlar.
Web ortamlarında, toplu e-posta göndermek , günlük satış raporları oluşturmak veya bir sayfanın önbelleğini güncellemek gibi işlemler için sürekli olarak kullanılır . Temel olarak, tekrarlayan ve tahmin edilebilir her türlü işlem, yöneticinin verimliliğini optimize etmek için Cron'a devredilebilir ve devredilmelidir.
Linux'ta otomasyona hakim olmak, manuel olarak yönetilen bir sunucuyu otonom ve verimli bir makineye dönüştürmenizi sağlar. Bash komut dosyalarının kullanımı, crontab'ın hassasiyeti ve günlük izlemeyi birleştirerek, bakım, güvenlik ve veri bütünlüğünün otomatik olarak ele alınmasını sağlayabilir, böylece zamandan tasarruf edebilir ve altyapı yönetiminde insan hatası payını önemli ölçüde azaltabilirsiniz.



