OTOMATİK GÖREV YÖNETİMİ (CRON JOBS) VE ZAMANLAMA

Linux sunucularında düzenli aralıklarla tekrarlanması gereken komutları ve betikleri (script) yönetme. Crontab dosyasının yapısı, zamanlama formatı ve yaygın Cron Job kullanım örnekleri.

Giriş: **Cron** servisi, Linux'ta zamanlanmış görevlerin ana mekanizmasıdır. Yönetimi, her kullanıcı için ayrı bir dosya olan **Crontab** (Cron Table) üzerinden yapılır. Sunucunun kararlılığı ve düzeni (özellikle yedekleme ve log temizliği) için Cron hayati öneme sahiptir.

Bölüm 1: Cron Servisi ve Crontab Yönetimi

Cron'un düzgün çalışması için `crond` veya `cronie` servisinin aktif olması gerekir (Genellikle systemd altında otomatik çalışır).

Crontab Komutları

  1. **Crontab Dosyasını Düzenleme:** Mevcut kullanıcı (Root veya standart kullanıcı) için crontab dosyasını düzenleyici (varsayılan olarak `vi`) ile açar.
    crontab -e
    **Not:** Bu dosya, kullanıcının `Home` dizininde değil, sistem genelinde tutulur.
  2. **Crontab Listesini Görüntüleme:** Mevcut kullanıcının tanımladığı tüm zamanlanmış görevleri görüntüler.
    crontab -l
  3. **Başka Bir Kullanıcının Crontab'ını Düzenleme/Görüntüleme (Root Yetkisiyle):** Başka bir kullanıcının görevlerini yönetme (Örn: `apache` kullanıcısı).
    sudo crontab -u apache -e
    sudo crontab -u apache -l
  4. **Crontab Dosyasını Silme:** Mevcut kullanıcının **tüm** zamanlanmış görevlerini siler (Dikkatli kullanılmalıdır!).
    crontab -r

Bölüm 2: Cron Zamanlama Formatı

Crontab'a eklenen her görev (Cron Job), zamanlama için 5 alan (field) kullanır. Komut, en sondaki 6. alana yazılır.

Alan (Field) Kapsam Açıklama
1. Dakika (Minute) 0 - 59 Hangi dakikada çalışsın?
2. Saat (Hour) 0 - 23 Hangi saatte çalışsın? (24 saat formatı)
3. Ayın Günü (Day of Month) 1 - 31 Ayın hangi gününde?
4. Ay (Month) 1 - 12 Yılın hangi ayında?
5. Haftanın Günü (Day of Week) 0 - 7 Haftanın hangi gününde? (0 veya 7 = Pazar)

Zamanlama Karakterleri

Bölüm 3: Örnek Cron Job Konfigürasyonları

Yaygın Kullanım Örnekleri

  1. **Her 15 Dakikada Bir Çalıştırma (Kontrol/Betik):**
    */15 * * * * /usr/local/bin/sunucu_kontrol.sh
    **Açıklama:** Her saatteki 0, 15, 30 ve 45. dakikalarda çalışır.
  2. **Her Gece Saat 02:30'da Çalıştırma (Yedekleme):**
    30 2 * * * /usr/local/bin/yedekleme_betigi.sh
    **Açıklama:** Her gün saat 02:30'da çalışır.
  3. **Haftalık Çalıştırma (Pazar Gecesi Saat 00:00 - Raporlama):**
    0 0 * * 0 /usr/bin/rapor_olustur.py
    **Açıklama:** Pazar (0) günü saat 00:00'da (gece yarısı) çalışır.
  4. **Çıktıyı Yönlendirme ve Engelleme:** Cron Job'un çalışması sırasında üretilen tüm çıktı (stdout/stderr), varsayılan olarak kullanıcıya e-posta ile gönderilir. Bu, istenmiyorsa çıktı engellenmelidir.
    # Log temizleme betiğini çalıştır ve çıktıyı tamamen engelle
    0 3 * * * /usr/local/bin/log_clean.sh > /dev/null 2>&1
    **Açıklama:** `> /dev/null` standart çıktıyı engeller. `2>&1` hata çıktısını da standart çıktıya yönlendirir ve o da engellenir.

Bölüm 4: Sistem Çapında Cron (Cron.daily, Cron.hourly)

Sistem çapında otomatikleştirilen görevler (OS güncelleme, log rotate, vb.) genellikle `/etc/cron.d/` ve `/etc/cron.hourly/` gibi dizinlerde tutulur. Buradaki betikler belirli zamanlarda otomatik olarak çalıştırılır.

Sistem Düzeyi Cron Dizinleri

En İyi Uygulama: Eğer bir betiği sistem çapında (Root yetkisiyle) ve belirli saatlerde çalıştırmak istiyorsanız, bunu `/etc/cron.d/` altına kendi `.conf` dosyanızı oluşturarak yapın. Standart kullanıcı görevleri için ise `crontab -e` kullanın.

SONRAKİ DÖKÜMAN: LINUX SERİSİ TAMAMLANDI! >>