Zum Inhalt springen
Verpassen Sie nicht unseren 20%-Rabatt für Neukunden! Rabattcode: KAVESNET20 Kopiert
Linux

Cron Job Nedir, Nasıl Kurulur? Linux Zamanlanmış Görev Rehberi

Linux'ta cron job ile yedek alma, log temizleme, script çalıştırma. Crontab syntax, örnekler ve sık yapılan hatalar.

KavesNET Ekibi 15. Januar 2026 3 Min Lesedauer
Cron job zamanlanmış görev görseli

Sunucuda her gece otomatik yedek almak, haftalık log temizlemek ya da 5 dakikada bir health check yapmak istiyorsan cron Linux’un standart aracıdır. Bu rehberde crontab syntax’ını, pratik örnekleri ve sık yapılan hataları anlatıyoruz.

Cron nedir?

Cron, Linux’ta belirli zamanlarda komut çalıştıran bir daemon. Her dakika crontab dosyasını okur, çalışma zamanı gelen komutları tetikler.

Crontab syntax

Bir cron satırı 5 zaman alanı + komut:

* * * * * 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)

Pratik örnekler

İfadeAnlamı
* * * * *Her dakika
*/5 * * * *Her 5 dakikada
0 * * * *Her saat başı
0 3 * * *Her gün gece 03:00
0 3 * * 1Her Pazartesi 03:00
0 3 1 * *Her ayın 1’i 03:00
30 2 * * 1-5Hafta içi 02:30
@rebootSunucu açılışında
@dailyHer gün 00:00
@weeklyHer hafta Pazar 00:00

Karmaşık ifadeleri test etmek için: crontab.guru

Crontab nasıl düzenlenir?

crontab -e        # Mevcut kullanıcı için düzenle
sudo crontab -e   # Root için
crontab -l        # Mevcut cron'ları listele
crontab -r        # TÜM cron'ları sil (dikkat!)

İlk açışta editör seçmen istenir — nano (kolay) ya da vim.

Pratik örnekler

Günlük yedek

# Her gece 03:00'te WordPress yedek
0 3 * * * /usr/local/bin/backup-wp.sh >> /var/log/backup.log 2>&1

>> /var/log/backup.log 2>&1 çıktıyı log’a kaydet, hataları da dahil et.

Saatlik log temizleme

0 * * * * find /var/log/myapp -name "*.log" -mtime +30 -delete

30 günden eski log’ları sil.

Her 5 dakikada health check

*/5 * * * * curl -s -o /dev/null -w "%{http_code}" https://siten.com >> /var/log/health.log

Veritabanı yedeği

30 2 * * * mysqldump -u root -p'PAROLA' veritabani | gzip > /backup/db-$(date +\%Y\%m\%d).sql.gz

⚠️ Crontab’da % karakteri özel — \% ile kaçır.

Sertifika yenileme

0 4 * * * certbot renew --quiet && systemctl reload nginx

Detaylı SSL için Let’s Encrypt yazımıza bak.

Cron çalıştığını nasıl doğrularsın?

# Cron servisi çalışıyor mu?
sudo systemctl status cron

# Cron log'u
sudo tail -f /var/log/syslog | grep CRON
# veya
sudo tail -f /var/log/cron

Komutun çalıştığını test etmek için cron’u 1-2 dakika sonrasına ayarla, log dosyasını izle.

Sık yapılan hatalar

  • Cron çalışmadı: Komut yolunu mutlak path ile yaz (/usr/bin/php değil sadece php değil)
  • Environment değişkenleri yok: Cron minimal env ile çalışır → script başında PATH= tanımla
  • % kaçırmamak: date +%Y%m%d cron’da kırılır → \%
  • Çıktı görünmez: Mail ayarı yoksa STDOUT kaybolur → >> log 2>&1 ile dosyaya yaz
  • PHP/Node script timeout: CLI olarak çalışır, web timeout’undan etkilenmez ama uzun script’leri arkaplana al
  • TZ farkı: Sunucu UTC ise saat uyuşmaz → sudo timedatectl set-timezone Europe/Istanbul

systemd timer alternatif (modern)

systemd timer’lar cron’a göre daha modern, log entegrasyonu daha temiz:

/etc/systemd/system/backup.service:

[Unit]
Description=Daily backup

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

/etc/systemd/system/backup.timer:

[Unit]
Description=Daily backup timer

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

[Install]
WantedBy=timers.target
sudo systemctl enable --now backup.timer
sudo systemctl list-timers

Sonuç

Cron, sunucu otomasyonun temelidir. 5 dakikada öğrenilir, her gün kullanılır. Yedek, temizlik, monitoring — hepsi cron ile.

İlgili: Sunucu Yedekleme · Linux Disk Genişletme

Schlagwörter Linux Cron Otomasyon Tutorial

Ähnliche Beiträge

Das könnte Sie auch interessieren.