MagmaNex LogoMagmaNex
Ana Sayfa/Blog/Crontab Rehberi: Linux'ta Zamanlanmış Görevler
Crontab Rehberi: Linux'ta Zamanlanmış Görevler
Sistem26 Mayıs 2026· 10 dk okuma

Crontab Rehberi: Linux'ta Zamanlanmış Görevler

Linux crontab sözdizimi, zamanlanmış görev örnekleri, yaygın hatalar ve best practices. Cron ifadelerini MagmaNex aracıyla kolayca oluşturun.

#cron#crontab#linux#bash#sistem yönetimi#otomasyon

Crontab Rehberi: Linux'ta Zamanlanmış Görevler

Cron, Unix/Linux sistemlerinde belirli aralıklarla veya zamanlarda komutları otomatik olarak çalıştıran bir daemon'dır. Yedekleme, log rotasyonu, raporlama, veri senkronizasyonu gibi tekrar eden görevleri otomatize etmek için kullanılır.

💡 Cron ifadelerini grafiksel olarak oluşturmak için: MagmaNex Cron Generator aracını kullanın.

Crontab Sözdizimi

* * * * * /path/to/komut
│ │ │ │ │
│ │ │ │ └── Haftanın günü (0-7, 0 ve 7 = Pazar)
│ │ │ └──── Ay (1-12)
│ │ └────── Ayın günü (1-31)
│ └──────── Saat (0-23)
└────────── Dakika (0-59)

Özel Karakter Açıklamaları

Karakter Anlamı Örnek
* Her değer * * * * * = Her dakika
, Birden fazla değer 1,15,30 = 1., 15. ve 30. dakika
- Aralık 9-17 = 09:00-17:00 arası her saat
/ Adım */5 = Her 5'te bir

Pratik Örnekler

Günlük / Haftalık / Aylık

# Her gece saat 02:00'de veritabanı yedeği
0 2 * * * /usr/local/bin/backup-db.sh

# Her Pazartesi 09:00'da haftalık rapor
0 9 * * 1 /scripts/weekly-report.py

# Her ayın 1'inde 00:00'da log temizleme
0 0 1 * * find /var/log -name "*.log" -mtime +30 -delete

# Her Cuma 18:00'da hafta sonu backup
0 18 * * 5 /scripts/weekend-backup.sh

Her N Dakikada / Saatte

# Her 5 dakikada bir sağlık kontrolü
*/5 * * * * /scripts/health-check.sh

# Her 15 dakikada veri senkronizasyonu
*/15 * * * * /usr/bin/python3 /scripts/sync-data.py

# Her 2 saatte cache temizleme
0 */2 * * * redis-cli FLUSHEXPIRED

# Her 30 dakikada SSL sertifika kontrolü
*/30 * * * * /scripts/check-ssl.sh

Mesai Saatlerinde

# Hafta içi 09:00-18:00 arası her saat
0 9-18 * * 1-5 /scripts/business-task.sh

# Mesai saatlerinde her 10 dakikada
*/10 9-18 * * 1-5 /scripts/monitor.sh

# Sadece Cumartesi ve Pazar
0 10 * * 6,0 /scripts/weekend-task.sh

Özel Zaman Kısayolları

@reboot     # Sistem açılışında bir kez çalış
@yearly     # 0 0 1 1 * — Yılda bir
@monthly    # 0 0 1 * * — Ayda bir  
@weekly     # 0 0 * * 0 — Haftada bir (Pazar gece yarısı)
@daily      # 0 0 * * * — Her gün gece yarısı
@hourly     # 0 * * * * — Her saat başı
# Sistem açılışında servisi başlat
@reboot /usr/local/bin/myservice start

# Her yıl SSL sertifikasını yenile
@yearly certbot renew

Crontab Yönetimi

# Mevcut crontab'ı düzenle
crontab -e

# Mevcut crontab'ı listele
crontab -l

# Crontab'ı sil (DİKKATLİ OL!)
crontab -r

# Başka kullanıcının crontab'ını düzenle (root)
crontab -u kullanici -e

# Crontab'ı dosyadan yükle
crontab /path/to/mycrontab.txt

# Crontab'ı dosyaya kaydet
crontab -l > /backup/crontab-backup.txt

Çıktı ve Log Yönetimi

Varsayılan olarak cron çıktısını e-posta ile gönderir. Bunu genellikle istemeyiz:

# Tüm çıktıyı sustur
0 2 * * * /scripts/backup.sh > /dev/null 2>&1

# Sadece hataları logla
0 2 * * * /scripts/backup.sh >> /var/log/backup.log 2>&1

# Hem stdout hem stderr logla (timestamp ile)
0 2 * * * /scripts/backup.sh >> /var/log/backup.log 2>&1; echo "[$(date)] Tamamlandı" >> /var/log/backup.log

# Log rotation ile birlikte kullan (logrotate)
0 2 * * * /scripts/backup.sh >> /var/log/app/backup.log 2>&1

Log Dosyasını İzleme

# Cron daemon loglarını izle
tail -f /var/log/syslog | grep CRON
tail -f /var/log/cron

# systemd sistemlerde
journalctl -u cron -f
journalctl -u cron --since "1 hour ago"

Ortam Değişkenleri

Cron kendi minimal ortamıyla çalışır. PATH genellikle /usr/bin:/bin ile sınırlıdır:

# Crontab'ın başına ortam değişkeni ekle
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""  # E-posta bildirimini kapat
HOME=/root

# Veya script içinde tanımla
#!/bin/bash
export PATH=/usr/local/bin:$PATH
source /etc/environment

Best Practices

1. Her zaman tam yol kullan

# ❌ Kötü — PATH'e bağlı
* * * * * python3 script.py

# ✅ İyi — tam yol
* * * * * /usr/bin/python3 /home/user/scripts/script.py

2. Flock ile çakışmayı önle

Uzun süren görevler bir sonraki çalışmayla çakışabilir:

# Önceki işlem bitmeden yenisini başlatma
*/5 * * * * /usr/bin/flock -n /tmp/mylock.lock /scripts/long-task.sh

3. Hata bildirimi ekle

#!/bin/bash
# /scripts/backup.sh

set -euo pipefail

if ! pg_dump mydb > /backups/backup.sql; then
    echo "HATA: Veritabanı yedeği başarısız!" | \
        mail -s "Cron Hatası" admin@example.com
    exit 1
fi

echo "$(date): Yedek başarıyla oluşturuldu" >> /var/log/backup.log

4. Test önce çalıştır

# Cron komutu olarak çalıştırmadan önce test et
bash -x /scripts/backup.sh

# Cron ortamını simüle et
env -i HOME=/root SHELL=/bin/bash PATH=/usr/bin:/bin bash /scripts/backup.sh

5. Sistem genelinde cron vs kullanıcı cron

# /etc/crontab veya /etc/cron.d/ — kullanıcı belirtmek gerekir
0 2 * * * root /scripts/system-backup.sh

# /var/spool/cron/crontabs/user — kullanıcı crontab
0 2 * * * /scripts/user-backup.sh

Systemd Timer Alternatifi

Modern Linux dağıtımlarında cron yerine systemd timer kullanabilirsiniz:

# /etc/systemd/system/backup.service
[Unit]
Description=Veritabanı Yedeği

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-db.sh
User=backup

# /etc/systemd/system/backup.timer
[Unit]
Description=Her gece 02:00 backup

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl enable backup.timer
systemctl start backup.timer
systemctl list-timers  # Tüm timer'ları listele

Systemd timer avantajları: Bağımlılık yönetimi, detaylı loglama, kaçırılan çalıştırmaları telafi etme (Persistent=true).

Yaygın Hatalar

Hata Sebebi Çözüm
Komut çalışmıyor Yanlış PATH Tam yol kullan
İzin reddedildi Script çalıştırılabilir değil chmod +x script.sh
Ortam değişkeni yok Cron minimal PATH source ~/.bashrc ekle
Her dakika çalışıyor * * * * * yerine doğru ifade Cron generator kullan
Zamanlama yanlış Timezone farkı TZ=Europe/Istanbul ekle

Özet

Cron, Linux sistemlerinin vazgeçilmez otomasyon aracıdır. Temel sözdizimini öğrendikten sonra kompleks zamanlama senaryoları için MagmaNex'in Cron Generator aracını kullanabilirsiniz — ifadeyi görsel olarak oluşturun, ne anlama geldiğini anında görün.

Sistem yönetimiyle ilgili diğer araçlarımız:


🛠 İlgili Araçlar

📚 İlgili Yazılar

← Tüm Yazılar🛠 Araçları Keşfet