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ı
- **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.
- **Crontab Listesini Görüntüleme:** Mevcut kullanıcının tanımladığı tüm zamanlanmış görevleri görüntüler.
crontab -l
- **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
- **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
- **\*** (Yıldız): Tüm olası değerler (Her dakika, her saat, her gün).
- **\-\** (Tire): Bir aralık belirtir (Örn: `1-5` Pazartesiden Cumaya).
- **\,** (Virgül): Belirli değerler listesi (Örn: `6,12,18` sadece bu saatlerde).
- **\/X** (Slash): Belirli aralıklarla (Örn: `*/5` her 5 dakikada bir).
Bölüm 3: Örnek Cron Job Konfigürasyonları
Yaygın Kullanım Örnekleri
- **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.
- **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.
- **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.
- **Çı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
- **`/etc/cron.hourly/`:** Bu dizindeki betikler her saat başı çalışır.
- **`/etc/cron.daily/`:** Bu dizindeki betikler her gün belirli bir saatte çalışır (Genellikle sabah 04:00 civarı).
- **`/etc/cron.weekly/`:** Bu dizindeki betikler haftada bir kez çalışır.
- **`/etc/cron.monthly/`:** Bu dizindeki betikler ayda bir kez çalışır.
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! >>