CronJob Logları Nerede Tutulur? Hata Tespiti Rehberi
Web Geliştirme

CronJob Logları Nerede Tutulur? Hata Tespiti Rehberi

CronJob Logları Nerede Tutulur? Sunucuda Hata Tespiti Nasıl Yapılır? Log dosyaları, komutlar, hata ayıklama ve silme adımları.

Kürşat Sezgin

Kürşat Sezgin

Teknik Ekip Lideri

3 Ekim 2026
5 dk okuma

Zamanlanmış görevler sessiz çalışır; hata verdiğinde çoğu zaman ekranda hiçbir şey görmezsiniz. CronJob Logları Nerede Tutulur? Sunucuda Hata Tespiti Nasıl Yapılır? sorusu da tam burada önem kazanır: logları doğru yerde aramazsanız çalışan bir işi bozuk, bozuk bir işi de çalışıyor sanabilirsiniz.

İçindekiler

Cronjob Logları Nerede Tutulur

Cronjob logları Linux dağıtımına göre farklı dosyalarda tutulur. Debian ve Ubuntu tabanlı sistemlerde cron kayıtları çoğunlukla /var/log/syslog içinde yer alırken, CentOS, RHEL, AlmaLinux ve Rocky Linux sistemlerde genellikle /var/log/cron dosyası kullanılır.

Cron servisinin görevi, zamanlanmış komutları belirtilen aralıklarla çalıştırmaktır. Ancak cron her zaman komut çıktısını ayrı bir dosyaya yazmaz. Çoğu sistemde yalnızca “görev tetiklendi mi?” bilgisi sistem loglarına düşer.

İşletim SistemiCron Log KonumuKontrol Komutu
Ubuntu / Debian`/var/log/syslog``grep CRON /var/log/syslog`
CentOS / RHEL`/var/log/cron``cat /var/log/cron`
AlmaLinux / Rocky Linux`/var/log/cron``tail -f /var/log/cron`
systemd tabanlı sistemlerJournal kayıtları`journalctl -u cron` veya `journalctl -u crond`

İpucu: Cron logunda görevin çalıştığını görmek, komutun başarıyla tamamlandığı anlamına gelmez. Komut hata üretmiş olabilir; bu yüzden çıktı yönlendirme ayrıca yapılmalıdır.

Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Nedir

Sunucuda cron hata tespiti, zamanlanmış görevlerin gerçekten çalışıp çalışmadığını, hangi kullanıcıyla tetiklendiğini, hata çıktısı üretip üretmediğini ve beklenen sonucu oluşturup oluşturmadığını inceleme sürecidir.

Bir cronjob üç farklı seviyede sorun çıkarabilir:

  1. Cron servisi çalışmıyor olabilir.
  2. Cron satırı hatalı yazılmış olabilir.
  3. Komut çalışıyor ama uygulama tarafında hata alıyor olabilir.

Bu yüzden hata tespiti yalnızca log dosyasına bakmakla sınırlı değildir. Dosya izinleri, çalışma dizini, ortam değişkenleri, PHP/Python/Node sürümü ve çıktı yönlendirme birlikte kontrol edilmelidir.

Kontrol AlanıOlası SorunNasıl Anlaşılır?
Cron servisiServis durmuş olabilir`systemctl status cron`
Zaman ifadesiYanlış saat veya aralık`crontab -l`
Komut yoluEksik veya göreli pathLogda “not found” hatası
YetkiKullanıcı dosyaya erişemiyor“Permission denied”
UygulamaScript hata veriyorÖzel log dosyası veya stderr çıktısı

Cronjobs Nedir?

Cronjobs, Linux/Unix sistemlerde belirli zamanlarda otomatik çalıştırılan görevlerdir. Yedekleme almak, rapor üretmek, e-posta kuyruğu işlemek, önbellek temizlemek veya entegrasyon verisi çekmek için kullanılır.

Cronjobs özellikle sunucu yönetiminde görünmez ama kritik bir katmandır. Örneğin her gece çalışan bir veritabanı yedeği fark edilmeden bozulursa, sorun ancak geri yükleme gerektiğinde anlaşılabilir. Bu nedenle cron görevlerinin loglanması ve düzenli takip edilmesi gerekir.

Yaygın cronjob kullanım alanları:

  • Veritabanı yedekleme
  • Laravel, WordPress veya özel yazılım görevleri
  • Raporlama işlemleri
  • Stok, fiyat veya API senkronizasyonları
  • Cache temizleme
  • E-posta kuyruğu çalıştırma
  • Geçici dosya temizliği

Cron Expression Ne Demek?

Cron expression, bir görevin hangi dakika, saat, gün, ay veya haftanın hangi gününde çalışacağını belirleyen zamanlama ifadesidir. Beş temel alandan oluşur ve her alan belirli bir zaman birimini temsil eder.

Standart cron ifadesi şu yapıdadır:

bash
* * * * * komut
AlanAnlamıÖrnek
1. alanDakika`0`
2. alanSaat`3`
3. alanAyın günü`15`
4. alanAy`*`
5. alanHaftanın günü`1`

Örneğin aşağıdaki ifade her gün saat 03:00’te çalışır:

bash
0 3 * * * /usr/bin/php /var/www/html/artisan schedule:run

Cron İfadesi Nedir?

Cron ifadesi, cron expression ile aynı anlama gelir ve zamanlanmış görevlerin çalışma periyodunu belirler. Yanlış yazılmış bir cron ifadesi görevin hiç çalışmamasına ya da beklenenden çok daha sık çalışmasına neden olabilir.

Bazı örnekler:

Cron İfadesiÇalışma ZamanıKullanım Senaryosu
`* * * * *`Her dakikaKuyruk kontrolü
`*/5 * * * *`Her 5 dakikada birAPI senkronizasyonu
`0 0 * * *`Her gece 00:00Günlük yedekleme
`0 3 * * 0`Pazar 03:00Haftalık bakım
`30 2 1 * *`Her ayın 1’i 02:30Aylık rapor

Uyarı: * * * * * her dakika çalışır. Ağır çalışan komutlarda bu ifade sunucuda yük oluşturabilir.

Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Nasıl

Cronjob hata tespiti için önce cron servisinin çalıştığı, ardından görevin tetiklenip tetiklenmediği ve son olarak komut çıktısının incelendiği üç aşamalı bir kontrol yapılmalıdır.

İlk adım servis durumunu kontrol etmektir:

bash
systemctl status cron

Bazı sistemlerde servis adı crond olabilir:

bash
systemctl status crond

Ardından mevcut cron kayıtlarını görüntüleyin:

bash
crontab -l

Belirli bir kullanıcı için cron kayıtlarını görmek istiyorsanız:

bash
crontab -u kullaniciadi -l

Cron tetiklenme loglarını kontrol etmek için:

bash
grep CRON /var/log/syslog

veya:

bash
tail -f /var/log/cron

Bu aşamada logda görevin görünüp görünmediğine bakılır. Görünüyorsa cron çalışıyor demektir; ama komutun başarılı tamamlandığını anlamak için çıktı ayrıca yakalanmalıdır.

Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Nasıl Yapılır

Cronjob hata tespiti yapılırken komut çıktısı ve hata çıktısı ayrı ayrı loglanmalıdır. Bunun için cron satırında stdout ve stderr yönlendirmesi kullanılır.

Örnek:

bash
* * * * * /usr/bin/php /var/www/site/script.php >> /var/log/my-cron.log 2>&1

Bu satırda:

  • >> normal çıktıyı log dosyasına ekler.
  • 2>&1 hata çıktısını da aynı dosyaya yönlendirir.
  • /usr/bin/php tam komut yoludur.
  • /var/www/site/script.php çalıştırılacak dosyadır.

Hata tespitinde şu sırayı izlemek daha sağlıklıdır:

  1. Komutu terminalde manuel çalıştırın.
  2. Aynı kullanıcıyla test edin.
  3. Tam dosya yolu kullanın.
  4. Log yönlendirmesi ekleyin.
  5. Ortam değişkenlerini kontrol edin.
  6. Dosya izinlerini inceleyin.
BelirtiMuhtemel NedenÇözüm
Logda cron yokServis çalışmıyorCron servisini başlatın
Cron var ama işlem yokKomut hatalıTam path kullanın
Permission deniedYetki sorunuKullanıcı izinlerini düzenleyin
Command not foundPATH eksik`/usr/bin/php` gibi tam yol yazın
Script terminalde çalışıyor, cron’da çalışmıyorOrtam farkıEnv değişkenlerini tanımlayın

Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Kodu

Cronjob hata tespiti için en pratik kod yaklaşımı, her görevin kendi log dosyasına yazdırılmasıdır. Böylece sistem logları ile uygulama çıktıları birbirine karışmaz.

Basit log yönlendirme örneği:

bash
*/10 * * * * /usr/bin/bash /home/user/jobs/import.sh >> /home/user/logs/import.log 2>&1

PHP için örnek:

bash
0 * * * * /usr/bin/php /var/www/html/cron.php >> /var/log/php-cron.log 2>&1

Laravel schedule için örnek:

bash
* * * * * cd /var/www/project && /usr/bin/php artisan schedule:run >> /var/log/laravel-schedule.log 2>&1

Daha okunabilir log için tarih eklenebilir:

bash
* * * * * echo "=== $(date) ===" >> /var/log/job.log && /usr/bin/php /var/www/job.php >> /var/log/job.log 2>&1

İpucu: Log dosyasını web kök dizinine koymayın. /var/log/, /home/user/logs/ veya uygulama dışı güvenli bir dizin tercih edin.

Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Kapatma

Cronjob hata tespitini kapatmak, çoğu zaman log üretimini durdurmak anlamına gelir. Ancak tamamen kapatmak yerine log seviyesini düşürmek veya eski logları döndürmek daha güvenli bir yaklaşımdır.

Çıktıyı tamamen yok saymak için:

bash
* * * * * /path/to/command > /dev/null 2>&1

Bu yöntem sessiz çalışması gereken basit görevlerde kullanılabilir. Fakat kritik yedekleme, ödeme, e-posta, stok veya entegrasyon görevlerinde önerilmez. Çünkü hata oluştuğunda geriye inceleyecek veri kalmaz.

Daha iyi yöntem, logrotate kullanmaktır:

bash
/var/log/my-cron.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

Bu yapı logları günlük döndürür, 7 gün saklar ve eski kayıtları sıkıştırır.

Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Silme

Cronjob loglarını silmeden önce hangi logun sistem kaydı, hangisinin uygulama çıktısı olduğunu ayırmak gerekir. Sistem loglarını kontrolsüz silmek hata geçmişini kaybetmenize ve servis analizini zorlaştırmanıza neden olabilir.

Bir log dosyasını tamamen silmek yerine içeriğini boşaltmak daha güvenlidir:

bash
sudo truncate -s 0 /var/log/my-cron.log

Dosyayı silmek gerekiyorsa:

bash
sudo rm /var/log/my-cron.log

Ancak çalışan süreç dosyayı açık tutuyorsa disk alanı hemen boşalmayabilir. Bu durumda servisi yeniden başlatmak gerekebilir.

Disk kullanımını kontrol etmek için:

bash
du -sh /var/log/*

Büyük log dosyalarını bulmak için:

bash
find /var/log -type f -size +100M
İşlemKomutNe Zaman Kullanılır?
Log görüntüleme`tail -f dosya.log`Canlı takip
Log boşaltma`truncate -s 0 dosya.log`Dosyayı koruyarak temizleme
Log silme`rm dosya.log`Gereksiz özel loglarda
Büyük dosya bulma`find /var/log -size +100M`Disk doluluğu analizinde

Sıkça Sorulan Sorular

Cronjob logları hangi dosyada tutulur?

Cronjob logları işletim sistemine göre farklı dosyalarda tutulur. Ubuntu ve Debian sistemlerde genellikle /var/log/syslog içinde CRON kayıtları bulunur. CentOS, RHEL, AlmaLinux ve Rocky Linux sistemlerde ise /var/log/cron dosyası kullanılır. systemd tabanlı sistemlerde journalctl -u cron veya journalctl -u crond komutlarıyla servis kayıtları izlenebilir. Ancak bu kayıtlar çoğu zaman yalnızca görevin tetiklendiğini gösterir; komut çıktısını ayrıca loglamak gerekir.

Cronjob çalışıyor mu nasıl anlaşılır?

Cronjob’un çalışıp çalışmadığını anlamak için önce crontab -l komutuyla görevin tanımlı olup olmadığı kontrol edilir. Ardından sistem loglarında cron kaydı aranır. Ubuntu’da grep CRON /var/log/syslog, CentOS tabanlı sistemlerde tail -f /var/log/cron komutu kullanılabilir. Görev logda görünüyorsa cron tetiklenmiştir. Fakat komutun başarılı çalıştığını anlamak için çıktı yönlendirmesi yapılmalı ve özel log dosyası incelenmelidir.

Cronjob hata veriyor ama logda görünmüyor, neden?

Cronjob logda görünmüyorsa cron servisi çalışmıyor, görev yanlış kullanıcıya eklenmiş veya crontab kaydı hatalı olabilir. Önce systemctl status cron ya da systemctl status crond komutuyla servis durumu kontrol edilmelidir. Sonra görevin doğru kullanıcı altında tanımlandığından emin olunmalıdır. Ayrıca /etc/cron.d/ içindeki dosyalarda format farklıdır; kullanıcı alanı eksikse görev hiç çalışmayabilir.

Cronjob çıktısı nasıl log dosyasına yazılır?

Cronjob çıktısını log dosyasına yazmak için cron satırının sonuna yönlendirme eklenir. Örnek kullanım: >> /var/log/job.log 2>&1. Burada >> normal çıktıyı dosyaya ekler, 2>&1 ise hata çıktısını aynı dosyaya yönlendirir. Böylece hem başarılı mesajlar hem de hata kayıtları tek dosyada toplanır. Kritik görevlerde her cronjob için ayrı log dosyası kullanmak analiz sürecini kolaylaştırır.

Cronjob neden terminalde çalışır ama cron’da çalışmaz?

Bu durum çoğunlukla ortam değişkenlerinden kaynaklanır. Terminalde çalışan kullanıcı için PATH, PHP sürümü, Python ortamı veya çalışma dizini tanımlıdır; cron ise daha sınırlı bir ortamda çalışır. Bu nedenle cron satırlarında tam dosya yolları kullanılmalıdır. Örneğin php script.php yerine /usr/bin/php /var/www/script.php yazmak daha güvenlidir. Ayrıca komutun çalıştığı dizin gerekiyorsa cd /proje/dizini && komut yapısı kullanılmalıdır.

Cronjob logları güvenli şekilde nasıl temizlenir?

Cronjob loglarını güvenli temizlemek için dosyayı silmek yerine truncate -s 0 dosya.log komutu tercih edilebilir. Bu yöntem dosyayı yerinde tutar ama içeriğini sıfırlar. Sistem loglarında kontrolsüz silme önerilmez; çünkü hata geçmişi kaybolabilir. Büyük log dosyaları düzenli oluşuyorsa logrotate yapılandırması kullanılmalıdır. Böylece loglar belirli aralıklarla döndürülür, sıkıştırılır ve eski kayıtlar otomatik temizlenir.

Cron expression hatası nasıl tespit edilir?

Cron expression hatası genellikle görevin beklenen zamanda çalışmamasıyla fark edilir. crontab -l çıktısı kontrol edilerek dakika, saat, gün, ay ve haftanın günü alanları incelenmelidir. Örneğin * * * * * her dakika çalışırken, 0 3 * * * her gün 03:00’te çalışır. Hatalı aralıklar gereksiz yük oluşturabilir. Test için geçici olarak görevi her dakika çalışacak şekilde ayarlayıp log çıktısı izlenebilir.

Cronjob için en doğru loglama yöntemi nedir?

En doğru yöntem, her kritik cronjob için ayrı bir log dosyası oluşturmaktır. Sistem cron logları görevin tetiklendiğini gösterirken, özel log dosyaları komutun gerçek çıktısını kaydeder. Örneğin yedekleme, entegrasyon ve raporlama görevleri farklı loglara yazmalıdır. Ayrıca log dosyalarına tarih damgası eklemek hata zamanını belirlemeyi kolaylaştırır. Uzun süreli kullanımda logrotate ile otomatik döndürme yapılmalıdır.

Cronjob disk alanını doldurur mu?

Evet, özellikle sık çalışan ve fazla çıktı üreten cronjob’lar disk alanını doldurabilir. Her dakika çalışan bir görev sürekli log üretiyorsa birkaç gün içinde büyük dosyalar oluşabilir. Disk kullanımını görmek için du -sh /var/log/* ve büyük dosyaları bulmak için find /var/log -type f -size +100M komutları kullanılabilir. Logların kontrolsüz büyümemesi için logrotate yapılandırması yapılmalı veya gereksiz çıktı azaltılmalıdır.

Cronjob tamamen sessiz nasıl çalıştırılır?

Cronjob’u tamamen sessiz çalıştırmak için çıktı /dev/null konumuna yönlendirilir. Örnek: komut > /dev/null 2>&1. Bu yapı hem normal çıktıyı hem de hata çıktısını yok sayar. Ancak kritik işlerde önerilmez; çünkü hata durumunda inceleme yapılacak veri kalmaz. Sessiz çalıştırma daha çok önemsiz, sonucu başka şekilde doğrulanan ve hata üretse bile iş akışını etkilemeyen görevlerde kullanılmalıdır.

İlgili İçerikler

  • Linux Sunucuda Log Dosyaları Nasıl İncelenir?
  • Crontab Kullanımı ve Zamanlanmış Görev Yönetimi
  • Linux Sunucuda Disk Alanı Temizleme Rehberi
  • PHP Cronjob Çalıştırma ve Hata Ayıklama
  • Sunucu Yönetiminde Logrotate Kullanımı

Cronjob hatalarında doğru log dosyasına bakmak, sorunu tahmin ederek değil kanıtla çözmenizi sağlar. Eğer zamanlanmış görevleriniz yedekleme, raporlama veya entegrasyon gibi kritik süreçleri yönetiyorsa, loglama yapısını baştan düzenlemek ileride saatler sürecek hata aramalarını önler. Sunucu yönetimi, bakım ve cron yapılandırmaları için çalıştığınız hosting veya sistem yönetimi ekibinden destek alarak daha güvenli bir izleme düzeni kurabilirsiniz.

Netlen'i Google'da Takip Edin

En güncel rehberlerimize, duyurularımıza ve teknik içeriklerimize Google üzerinden öncelikli ulaşmak için Netlen'i tercih ettiğiniz kaynaklar arasına ekleyin.

GoogleGoogle'da Tercih edilenkaynak olarak ekleyin

Bu yazıyı paylaşın

Kürşat Sezgin

Yazar Hakkında

Kürşat Sezgin

Teknik Ekip Lideri

Netlen'de teknik ekip lideri olarak sunucu yönetimi, ağ güvenliği ve web teknolojileri alanında sistem yönetimi ve teknik destek sağlıyorum. Zaman zaman bu konularda teknik blog yazıları da paylaşıyorum.

Yorumlar

Bu yazı hakkında okuyucu yorumları