Ulu Önder Mustafa Kemal Atatürk'ü aramızdan ayrılışının 88. yılında saygı, minnet ve özlemle anıyoruz.

Cron ile zamanlanmış görevler: yazım kuralları ve sık yapılan hatalar

kaan.yildiz Mid 8 saat önce · 3 görüntülenme

Yedek almak, rapor üretmek, eski dosyaları temizlemek... Linux'ta düzenli işlerin çoğu cron ile yapılır. Yazımı basit ama küçük ayrıntılar görevlerin sessizce çalışmamasına yol açabiliyor.

Söz dizimi

┌──────── dakika (0-59)
│ ┌────── saat (0-23)
│ │ ┌──── ayın günü (1-31)
│ │ │ ┌── ay (1-12)
│ │ │ │ ┌ haftanın günü (0-7, 0 ve 7 pazar)
│ │ │ │ │
* * * * * komut

Örnekler

*/10 * * * *   her 10 dakikada bir
0 3 * * *      her gün 03:00'te
30 2 * * 0     her pazar 02:30'da
0 9 1 * *      her ayın 1'inde 09:00'da
0 8-18 * * 1-5 hafta içi 08:00-18:00 arası saat başı

Düzenlemek için crontab -e, listelemek için crontab -l kullan. Bir ifadenin ne zaman çalışacağından emin değilsen crontab.guru gibi bir araçla kontrol et.

Sık yapılan hatalar

1. PATH farkı

Cron, senin terminalindeki ortam değişkenleriyle çalışmaz; PATH çok kısadır. Terminalde çalışan komut cron'da "command not found" verebilir. Çözüm: tam yol kullan.

0 3 * * * /usr/bin/php /var/www/uygulama/bin/console app:temizle

Komutun tam yolunu which php ile öğrenebilirsin.

2. Çıktının kaybolması

Cron çıktıyı ya yerel posta kutusuna atar ya da kaybeder. Hata ayıklayabilmek için logla:

0 3 * * * /usr/local/bin/yedek.sh >> /var/log/yedek.log 2>&1

2>&1 hata çıktısını da aynı dosyaya yazar.

3. Yüzde işareti

Crontab satırında % karakteri satır sonu anlamına gelir. date +%F gibi bir komut kullanıyorsan \% ile kaçır ya da komutu bir betik dosyasına taşı.

4. Çalışma dizini

Cron görevleri kullanıcının ev dizininde başlar. Betik göreli yol kullanıyorsa önce cd yap ya da betiğin içinde tam yol kullan.

5. Üst üste binen görevler

Her 5 dakikada çalışan bir iş bazen 5 dakikadan uzun sürerse ikinci kopya başlar. flock ile bunu önleyebilirsin:

*/5 * * * * flock -n /tmp/is.lock /usr/local/bin/is.sh

6. Saat dilimi

Cron sunucunun saat dilimini kullanır. timedatectl ile kontrol et; sunucu UTC'deyse Türkiye saatine göre 3 saat geri hesaplaman gerekir.

Çalıştı mı?

grep CRON /var/log/syslog        # Debian/Ubuntu
journalctl -u cron --since today # systemd kullanan sistemler

Önemli görevlerde başarısızlık durumunda e-posta veya mesaj gönderen küçük bir kontrol eklemek, sorunu haftalar sonra fark etmekten iyidir.

0

0 cevap

Henüz cevap yok. İlk cevabı sen yaz.

Cevap yaz

Cevap yazmak için giriş yapmalısın.

Konu bilgisi
  • Açılış10.11.2026
  • Son etkinlik8 saat önce
  • Cevap0
  • Görüntülenme3
  • Beğeni0
Yeni konu aç