Linux Sunucuda Cron Job Nedir, Nasıl Kullanılır?

HazalHost Teknik Ekip
10 Nisan 2026
8 dk okuma
Sunucu Yönetimi

Cron job, Linux'ta belirli komutları veya scriptleri otomatik olarak zamanlanmış şekilde çalıştırmanı sağlayan bir sistem aracıdır. Yedekleme, log temizleme, rapor gönderme gibi tekrarlayan işleri otomatikleştirmek için vazgeçilmezdir.

Cron Job Nedir?

Cron, Unix tabanlı işletim sistemlerinde gelen bir zamanlayıcıdır. crontab (cron table) dosyasına yazılan kurallarla hangi komutun ne zaman çalışacağını belirlersin.

Crontab Söz Dizimi

# Crontab formatı:
# dakika  saat  gün  ay  haftanın_günü  komut
#  0-59   0-23  1-31 1-12    0-7

# Örnekler:
# Her gün saat 03:00'te yedek al
0 3 * * * /usr/local/bin/backup.sh

# Her 5 dakikada bir çalış
*/5 * * * * /usr/local/bin/check.sh

# Her Pazartesi saat 09:00'da
0 9 * * 1 /usr/local/bin/rapor.sh

# Her ayın 1'inde saat 00:00'da
0 0 1 * * /usr/local/bin/aylik-temizlik.sh

# Hafta içi her gün saat 18:00'de
0 18 * * 1-5 /usr/local/bin/is-raporu.sh
📋 Hızlı Referans:
  • * — Her değer
  • */5 — Her 5 birimde bir
  • 1,15 — 1 ve 15
  • 1-5 — 1'den 5'e kadar
  • @reboot — Sunucu başlangıcında
  • @daily — Günde bir (00:00)
  • @hourly — Saatte bir
  • @weekly — Haftada bir

Crontab Yönetimi

# Mevcut cron job'ları listele
crontab -l

# Crontab'ı düzenle
crontab -e

# Başka kullanıcının crontab'ını düzenle
sudo crontab -u www-data -e

# Tüm cron job'ları sil
crontab -r

Pratik Örnekler

Otomatik Yedekleme

# Her gece 02:00'de MySQL yedek al
0 2 * * * mysqldump -u root -p'sifre' veritabani > /backup/db-$(date +\%Y\%m\%d).sql

# Her gece 03:00'te web dizinini yedekle
0 3 * * * tar -czf /backup/www-$(date +\%Y\%m\%d).tar.gz /var/www/html

Log Temizliği

# Her hafta pazar 04:00'te eski logları sil
0 4 * * 0 find /var/log -name "*.gz" -mtime +30 -delete

SSL Sertifika Yenileme

# Her gün 05:00'te Let's Encrypt yenileme kontrolü
0 5 * * * certbot renew --quiet

Sunucu Sağlık Kontrolü

# Her 10 dakikada servis kontrolü
*/10 * * * * systemctl is-active nginx || systemctl restart nginx

💡 Otomasyon İçin Güçlü Altyapı

Cron job'lar sunucu otomasyonunun temelidir. HazalHost VDS sunucularda tam root erişimi ile istediğin otomasyonu kurabilirsin. Türkiye lokasyonu ve DDoS koruma standart.

→ Ekonomik VDS  |  → Performans VDS

Cron Job Hata Ayıklama

# Çıktıyı log dosyasına yönlendir
*/5 * * * * /usr/local/bin/script.sh >> /var/log/cron-script.log 2>&1

# Cron loglarını kontrol et
sudo grep CRON /var/log/syslog
sudo journalctl -u cron

# Script'in çalışabilir olduğundan emin ol
chmod +x /usr/local/bin/script.sh

# Tam yol kullan (PATH sorunu)
*/5 * * * * /usr/bin/php /var/www/html/cron.php
⚠️ Yaygın Hatalar:
  • Script'e çalıştırma izni (chmod +x) verilmemiş
  • Komutlarda tam yol kullanılmamış
  • Çevre değişkenleri (PATH, HOME) tanımlı değil
  • Cron çıktısı yönlendirilmemiş (mailbox doluyor)

Alternatif: systemd Timers

# Timer dosyası oluştur
sudo nano /etc/systemd/system/backup.timer

[Unit]
Description=Günlük Yedekleme Timer

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

[Install]
WantedBy=timers.target
# Service dosyası oluştur
sudo nano /etc/systemd/system/backup.service

[Unit]
Description=Yedekleme Servisi

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
# Aktifleştir
sudo systemctl enable backup.timer
sudo systemctl start backup.timer

# Timer'ları listele
systemctl list-timers

🚀 Otomasyonla Zamandan Kazan

Cron job'lar ile sunucunu otomatikleştir, zamandan kazan. HazalHost VDS'te tam kontrol seninle.

🔥 VDS Satın Al

Sonuç

Cron job'lar Linux sunucunda tekrarlayan görevleri otomatikleştirmenin en etkili yoludur. Yedekleme, log temizliği, sertifika yenileme ve sağlık kontrolleri gibi işleri cron ile otomatikleştirerek hem zaman kazan hem de insan hatalarını minimize et.

Sık Sorulan Sorular (FAQ)

Cron job çalışıp çalışmadığını nasıl anlarım?

Çıktıyı bir log dosyasına yönlendirerek (>> /var/log/cron.log 2>&1) kontrol edebilirsin. Ayrıca grep CRON /var/log/syslog ile cron loglarını inceleyebilirsin.

Cron job saniye bazlı çalışabilir mi?

Hayır, cron minimum dakika bazlı çalışır. Saniye bazlı zamanlama için systemd timer veya özel bir daemon kullanman gerekir.

Cron ile systemd timer arasındaki fark nedir?

Cron daha basit ve yaygındır. systemd timer ise daha modern, detaylı loglama, bağımlılık yönetimi ve saniye bazlı zamanlama sunar. Kompleks senaryolarda systemd timer tercih edilebilir.

#cron #crontab #otomasyon #linux #zamanlanmış görev
Paylaş:

İçindekiler

🚀 VDS Sunucu Arıyorsan

Türkiye lokasyonlu, DDoS korumalı VDS sunuculara hemen göz at.

VDS Paketlerini İncele