KernelPunk

root
Forum yöneticisi
Linux sunucularında verimliliği artırmak ve sistem yönetimini kolaylaştırmak için otomasyon büyük bir öneme sahiptir. Cron, Linux işletim sistemlerinde belirli komutları veya scriptleri belirlenen zaman dilimlerinde otomatik olarak çalıştıran güçlü bir zamanlayıcıdır. Sistem yöneticileri ve geliştiriciler, cron'u kullanarak yedekleme işlemleri, sistem güncellemeleri, log temizleme gibi birçok görevi planlı bir şekilde gerçekleştirebilirler.

1. Cron Nedir?​

Cron, Unix ve Linux sistemlerinde zamanlanmış görevleri yönetmek için kullanılan bir zamanlayıcıdır. Kullanıcıların belirli zaman dilimlerinde çalıştırılmasını istedikleri komutları veya scriptleri otomatik olarak çalıştırmasına olanak tanır.

Cron ile çalıştırılan her görev bir cron job olarak adlandırılır ve bu işler crontab adlı bir yapı içerisinde saklanır.

2. Cron'un Kullanım Alanları​

Cron, sistem yöneticileri ve geliştiriciler için birçok kullanım alanına sahiptir:
  • Veri Yedekleme: Belirli zamanlarda otomatik yedek alma işlemleri.
  • Log Yönetimi: Sistem loglarını belirli periyotlarda temizleme veya arşivleme.
  • Otomatik Güncellemeler: Paket yöneticileri ile belirlenen zamanlarda güncelleme çalıştırma.
  • E-Posta Raporları: Günlük veya haftalık sistem durum raporlarını e-posta ile gönderme.
  • Dosya Senkronizasyonu: Belirli klasörleri veya veritabanlarını senkronize etme.

3. Crontab Dosyası ve Yapısı​

Cron işleri, her kullanıcı için ayrı olarak saklanır ve yönetilir. Crontab dosyasında her satır, belirli bir zaman diliminde çalıştırılacak bir komut içerir.

Crontab’ı düzenlemek için aşağıdaki komutu kullanabilirsiniz:
Bash:
crontab -e
Crontab dosyasındaki her satır şu formatı takip eder:
SCSS:
┌───────────── dakika (0–59)
│ ┌────────── saat (0–23)
│ │ ┌──────── gün (1–31)
│ │ │ ┌────── ay (1–12)
│ │ │ │ ┌──── hafta günü (0–7, 0 ve 7 Pazar)
│ │ │ │ │
* * * * * komut veya script yolu

4. Cron Job Örnekleri​

Örnek 1: Her gece saat 02:00'de bir yedekleme scriptini çalıştırma
Bash:
0 2 * * * /home/user/yedekleme.sh
Örnek 2: Her hafta Pazartesi günü saat 08:00’de bir e-posta raporu gönderme
Bash:
0 8 * * 1 /home/user/gonder_rapor.sh | mail -s "Haftalık Rapor" [email protected]
Örnek 3: Her gün saat 12:00'de bir dizindeki geçici dosyaları temizleme
Bash:
0 12 * * * rm -rf /tmp/*
Örnek 4: Her 15 dakikada bir bir Python betiğini çalıştırma
Bash:
*/15 * * * * /usr/bin/python3 /home/user/script.py
Örnek 5: Her gün sabah 05:30’da sistem güncellemelerini kontrol etme
Bash:
30 5 * * * apt update && apt upgrade -y

5. Crontab Komutları​

Cron işlerini yönetmek için aşağıdaki komutları kullanabilirsiniz:

Mevcut cron job'ları listeleme:
Bash:
crontab -l
Yeni bir cron job ekleme veya düzenleme:
Bash:
crontab -e
Tüm cron job'ları temizleme:
Bash:
crontab -r
Belirli bir kullanıcının cron job'larını görüntüleme:
Bash:
crontab -u kullaniciadi -l

6. Cron İşlerinin Çalışmasını Kontrol Etme​

Bazen cron job’ları beklenen şekilde çalışmayabilir. Bu durumda, aşağıdaki kontrolleri yapabilirsiniz:
  • Cron Servisinin Çalıştığını Doğrulayın
    Bash:
    systemctl status cron
  • Cron Loglarını Kontrol Edin
    Bash:
    cat /var/log/syslog | grep CRON
  • Komutun veya Script'in Çalışabilir Olduğundan Emin Olun
    Bash:
    chmod +x /home/user/script.sh

7. Cron Kullanırken Dikkat Edilmesi Gerekenler​

  • Absolute Path Kullanımı: Cron içerisinde çalıştırılacak komutlarda tam dosya yolları kullanılmalıdır.
  • Çalışma Yetkileri: Cron'un çalıştıracağı dosyaların uygun yetkilere sahip olması gerekir.
  • Ortam Değişkenleri: Cron, varsayılan olarak kullanıcı ortam değişkenlerini yüklemez. Gerekirse script içerisinde source ~/.bashrc gibi komutlar eklenebilir.
  • Çok Sık Çalışan İşlerden Kaçının: Yoğun işlem gücü gerektiren görevlerin sık çalıştırılması sistem performansını olumsuz etkileyebilir.
Cron, Linux sunucularında sistem yönetimini kolaylaştıran ve zamanlanmış görevleri otomatik hale getiren güçlü bir araçtır. Günlük bakım işlemlerinden otomatik güncellemelere kadar birçok kullanım senaryosu ile zamandan tasarruf sağlayarak verimliliği artırır.
 
Back
Top