Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 7 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

Journalctl ile servis logları nasıl filtrelenir?​


Bir systemd servisinin loglarını görmek için terminalde journalctl -u servis-adi.service komutunu çalıştırın. Bu komut systemd/journald kullanan Linux içindir; servis adı dağıtıma göre değişebilir. Örneğin Nginx kayıtları için journalctl -u nginx.service, yalnız mevcut açılıştan sonraki kayıtlar için journalctl -b -u nginx.service kullanılır. Çıktıyı daraltmak için zaman, öncelik, işlem kimliği veya canlı takip seçenekleri ekleyebilirsiniz.

Temel filtreler nasıl çalışır?​


-u systemd birimine, yani servisin adına göre filtreler. Servis adını bilmiyorsanız systemctl list-units --type=service veya systemctl status servis-adi.service ile kontrol edin. journalctl kayıtları varsayılan olarak en eskiden yeniye doğru gösterir; yalnız son kayıtları almak için -n kullanılır.

Kod:
journalctl -u ssh.service -n 50 --no-pager
journalctl -u ssh.service --since "1 hour ago"
journalctl -u ssh.service -p err
journalctl -u ssh.service -f

Bazı dağıtımlarda ssh.service yerine sshd.service bulunur; gerçek birim adını önce doğrulayın. İlk komut son 50 kaydı gösterir ve ekranı etkileşimli okuyucuya açmaz. İkinci komut son bir saatlik kayıtlarla sınırlar. Üçüncü komutta tek err düzeyi, emerg (0) ile err (3) arasını kapsar. err..alert aralığı emerg düzeyini dışarıda bırakacağından aynı anlamda kullanılmaz. Dördüncü komut yeni kayıtları oluştukça izler; izlemeyi Ctrl+C ile durdurabilirsiniz.

Filtre seçerken amaçla eşleşen en dar komutu kullanmak, sorunun kaynağını daha hızlı ayırır:

AmaçKomutNe gösterir?
Servisin tüm kayıtlarıjournalctl -u app.serviceBirime ait journal kayıtları
Son açılıştaki kayıtlarjournalctl -b -u app.serviceMevcut sistem açılışından sonraki kayıtlar
Yalnız hatalarjournalctl -u app.service -p errHata ve daha ciddi öncelikler
Canlı takipjournalctl -u app.service -fYeni gelen kayıtlar

Servis adı yerine işlem kimliğiyle arama yapmak gerektiğinde _PID, program adına göre arama yapmak gerektiğinde _COMM alanları kullanılabilir:

Kod:
journalctl _PID=1234
journalctl _COMM=sshd

Bu alanlar ancak ilgili kayıt gerçekten bu metadata ile yazılmışsa sonuç verir. Servisin tamamını incelemek için önce -u ile başlayın; daha sonra grep ile serbest metin aramak yerine journal alanlarını kullanmak, yanlış eşleşmeleri azaltır.

Uygulanabilir teşhis örneği​


Örnek olarak worker.service başlatılamıyor olsun. Önce son açılıştaki son kayıtları ve servis durumunu birlikte inceleyin:

  1. systemctl status worker.service komutuyla servisin mevcut durumunu ve gerçek birim adını doğrulayın.
  2. journalctl -b -u worker.service -n 100 --no-pager komutuyla son açılıştaki son 100 kaydı alın.
  3. Çıktıda yalnız önemli olayları ayırmak için journalctl -b -u worker.service -p warning --no-pager komutunu çalıştırın.
  4. Sorunu yeniden üretirken journalctl -u worker.service -f ile yeni kayıtları izleyin.
  5. Hata satırında belirtilen dosya, izin, yapılandırma veya bağımlılık sorununu düzelttikten sonra systemctl status worker.service ile sonucu yeniden kontrol edin.

Başarılı sonuçta servis durumu çalışıyor olarak görünür ve canlı takip sırasında yeni başlatma ya da işlem kayıtları gelir. --since ile zaman aralığını daha da daraltabilirsiniz:

Kod:
journalctl -u worker.service --since "2026-01-01 10:00:00" --until "2026-01-01 11:00:00" --no-pager

Bu örnekte tarih ve saatleri incelemek istediğiniz gerçek aralıkla değiştirin. Sistem saat dilimi veya saat ayarı yanlışsa zaman filtresi beklediğiniz satırları dışarıda bırakabilir.

Sonuç yoksa veya çıktı anlaşılmıyorsa​


No entries görülmesi mutlaka servisin sorunsuz olduğu anlamına gelmez. Önce birim adının doğru olduğunu, servisin gerçekten systemd tarafından yönetildiğini ve ilgili zaman aralığında kayıt üretildiğini kontrol edin. Uygulama kendi dosyasına yazıyorsa kayıtlar journal yerine o dosyada bulunabilir.

Yetki hatası alırsanız aynı sorguyu uygun yönetici yetkisiyle çalıştırın. Ancak sudo kullanmak, yanlış servis adını veya hiç kayıt üretilmemesini düzeltmez. Çok fazla çıktı varsa -n, --since, -p ve --no-pager seçeneklerini birlikte kullanın. Satırları daha sonra başka araçlarla işlemek gerekiyorsa -o short-iso gibi açık bir çıktı biçimi seçebilirsiniz.

Sık sorulan sorular​


Journal kayıtlarının kalıcı tutulup tutulmadığını nasıl anlarım?​


journalctl --list-boots komutu geçmiş sistem açılışlarını listeler. Yalnız mevcut açılış görünüyorsa journal verileri kalıcı olmayabilir veya eski kayıtlar temizlenmiş olabilir.

Bir servisin hata kodunu log içinde nasıl ayırt ederim?​


systemctl status servis-adi.service çıktısındaki çıkış durumu ve son journal satırlarını birlikte değerlendirin. Journal satırı nedeni açıklar; hata kodu ise servis sürecinin nasıl sonlandığını gösterir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic