
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
Teknik Ekip Lideri
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ı Nerede Tutulur Sunucuda Hata Tespiti Nedir
- Cronjobs Nedir?
- Cron Expression Ne Demek?
- Cron İfadesi Nedir?
- Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Nasıl
- Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Nasıl Yapılır
- Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Kodu
- Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Kapatma
- Cronjob Logları Nerede Tutulur Sunucuda Hata Tespiti Silme
- Sıkça Sorulan Sorular
- İlgili İçerikler
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 Sistemi | Cron Log Konumu | Kontrol 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ı sistemler | Journal 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:
- Cron servisi çalışmıyor olabilir.
- Cron satırı hatalı yazılmış olabilir.
- 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ı Sorun | Nasıl Anlaşılır? |
|---|---|---|
| Cron servisi | Servis durmuş olabilir | `systemctl status cron` |
| Zaman ifadesi | Yanlış saat veya aralık | `crontab -l` |
| Komut yolu | Eksik veya göreli path | Logda “not found” hatası |
| Yetki | Kullanıcı dosyaya erişemiyor | “Permission denied” |
| Uygulama | Script 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:
* * * * * komut
| Alan | Anlamı | Örnek |
|---|---|---|
| 1. alan | Dakika | `0` |
| 2. alan | Saat | `3` |
| 3. alan | Ayın günü | `15` |
| 4. alan | Ay | `*` |
| 5. alan | Haftanın günü | `1` |
Örneğin aşağıdaki ifade her gün saat 03:00’te çalışır:
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 dakika | Kuyruk kontrolü |
| `*/5 * * * *` | Her 5 dakikada bir | API senkronizasyonu |
| `0 0 * * *` | Her gece 00:00 | Günlük yedekleme |
| `0 3 * * 0` | Pazar 03:00 | Haftalık bakım |
| `30 2 1 * *` | Her ayın 1’i 02:30 | Aylı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:
systemctl status cron
Bazı sistemlerde servis adı crond olabilir:
systemctl status crond
Ardından mevcut cron kayıtlarını görüntüleyin:
crontab -l
Belirli bir kullanıcı için cron kayıtlarını görmek istiyorsanız:
crontab -u kullaniciadi -l
Cron tetiklenme loglarını kontrol etmek için:
grep CRON /var/log/syslog
veya:
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:
* * * * * /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>&1hata çıktısını da aynı dosyaya yönlendirir./usr/bin/phptam 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:
- Komutu terminalde manuel çalıştırın.
- Aynı kullanıcıyla test edin.
- Tam dosya yolu kullanın.
- Log yönlendirmesi ekleyin.
- Ortam değişkenlerini kontrol edin.
- Dosya izinlerini inceleyin.
| Belirti | Muhtemel Neden | Çözüm |
|---|---|---|
| Logda cron yok | Servis çalışmıyor | Cron servisini başlatın |
| Cron var ama işlem yok | Komut hatalı | Tam path kullanın |
| Permission denied | Yetki sorunu | Kullanıcı izinlerini düzenleyin |
| Command not found | PATH eksik | `/usr/bin/php` gibi tam yol yazın |
| Script terminalde çalışıyor, cron’da çalışmıyor | Ortam 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:
*/10 * * * * /usr/bin/bash /home/user/jobs/import.sh >> /home/user/logs/import.log 2>&1
PHP için örnek:
0 * * * * /usr/bin/php /var/www/html/cron.php >> /var/log/php-cron.log 2>&1
Laravel schedule için örnek:
* * * * * cd /var/www/project && /usr/bin/php artisan schedule:run >> /var/log/laravel-schedule.log 2>&1
Daha okunabilir log için tarih eklenebilir:
* * * * * 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:
* * * * * /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:
/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:
sudo truncate -s 0 /var/log/my-cron.log
Dosyayı silmek gerekiyorsa:
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:
du -sh /var/log/*
Büyük log dosyalarını bulmak için:
find /var/log -type f -size +100M
| İşlem | Komut | Ne 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.
Bu yazıyı paylaşın

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ı


