Linux dmesg Komutu ve Kullanımı

Merhabalar,

Bu makalede, Linux sunucular üzerinde, hata çözümlemesi yaparken kullanabileceğiniz, oldukça yararlı bir komut hakkında bilgilendirmeler yapmak istiyorum. Daha önceki yayınlarımda da belirttiğim gibi, Linux’la ilgilenecekseniz bol bol log okumanız gerekiyor. 🙂 Durum böyle olunca, “neredeki hangi log’u” okuyacağınız da önem taşıyor…

dmesg komutu

dmesg komutu, Unix benzeri sistemlerde kernel’la (çekirdekle) ilgili mesajları görüntülemek için kullanılır. dmesg, “display message ya da display driver “ kısaltmasıdır. Bu komut, verileri kernel ring buffer’ı okuyarak alır. Linux sistemlerde sorun giderme adımlarında, dmesg komutu donanımla ilgili hataları ve uyarıları belirlememize de yardımcı olur. Bunun dışında, ekranınızda arka plan programları ile ilgili mesajları da yazdırabilir.

Kullanımı oldukça basittir ve aşağıdaki gibidir.

dmesg {options}

Aşağıda, dmesg komutunda kullanılabilecek seçeneklerden bazılarını görmektesiniz. Her birinin detaylı açıklamalarını man sayfalarından da bulabilirsiniz.

Şimdi bu komutu, daha yararlı ve tam amacımıza uygun olacak şekilde, nasıl kullanacağımıza dair birkaç örnek aktarayım.

1.  kernel ring buffer’daki tüm mesajları görüntülemek

Komutu tek başına uyguladığımızda, ekranınızda kernel ring buffer’daki tüm mesajları görebilirsiniz.

dmesg

dmesg komutu tüm mesajları yazdıracak, ancak ekranda yalnızca en son mesajları göreceksiniz. Tüm mesajları analiz etmek ve bunları sayfa bazında görüntülemek istiyorsanız less veya more komutlarını kullanmanızı öneriyorum.

dmesg | less

2.  RAM, Sabit disk, USB sürücüler ve Seri bağlantı noktaları ile ilgili mesajları görüntülemek

dmesg komut çıkışında, RAM-SabitDisk-usb sürücü ve Seri portlarla ilgili mesajları da arayabiliriz. Kullanım şekli aşağıdaki gibi olacaktır.

dmesg | grep -i memory
dmesg | grep -i dma
dmesg | grep -i usb
dmesg | grep -i tty

grep, sonrasında verdiğiniz ibareye göre arama yaparak, yalnızca ihtiyacınız olan mesajları ekrana yazacaktır.

Yukarıdaki bu komutları, çoklu grep seçeneği kullanarak, tek bir komutta birleştirilebilirsiniz. Aşağıdaki örnekte tamamını ya da istediğiniz kadar tanımı yan yana şu şekilde yazabilirsiniz.

dmesg | grep -E “memory|dma|usb|tty”

3.  dmesg günlüklerini okumak ve temizlemek

dmesg günlüklerini okuduktan sonra temizlemek isterseniz, komutu -C seçeneği ile kullanabilirsiniz.

dmesg -C

4.  Renkli mesajları görüntülemek (dmesg komut çıktısında)

Renkli mesajları yazdırmak istiyorsanız, dmesg komutunda -L seçeneğini kullanabilirsiniz.

dmesg -L

5.  dmesg çıktısını belirli bir alanla sınırlandırma

dmesg çıktısını, örneğin daemon gibi belirli bir alanla sınırlamak istiyorsanız, dmesg komutundan sonra –facility=daemon seçeneğini kullanabilirsiniz.

dmesg –facility=daemon

dmesg komutunda desteklenen günlük alanları ise aşağıdaki gibidir:

  • kern
  • user
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • news

6.  dmesg komut çıktısını belirli düzeyler listesiyle sınırlama

Aşağıdakiler, dmesg komutu tarafından desteklenen, belirli günlük seviyelerini göstermektedir:

  • emerg
  • alert
  • crit
  • err
  • warn
  • notice
  • info
  • debug

Error ve Warning ile ilgili günlükleri görüntülemek istediğimizi varsayalım. Komutun ardından “–level” seçeneğini ve ardından err & warn gibi seviyeleri kullanabilirsiniz.

dmesg –level=err,warn

7.  dmesg günlüklerinde zaman damgalarını etkinleştirme

dmesg’de zaman damgalarını etkinleştirmek istediğimiz bazı senaryolar olabilir. Komuttan sonra -T seçeneği kullanılarak, tarihsel sırayla bu logları görebiliriz.

dmesg -T

Eğer dmesg komut çıktısında, kod çözme özelliği ve seviyeleri ile birlikte zaman damgalarını da istiyorsanız, -Tx seçeneğini kullanabilirsiniz.

dmesg -Tx

8.  Gerçek zamanlı dmesg günlüklerini izlemek

dmesg günlüklerini, gerçek zamanlı olarak görüntülemek için –follow seçeneğini kullanabiliriz. Böylece, gelen yeni logları görebilir oluruz.

dmesg –follow

dmesg’nin gerçek zamanlı izlenmesi boyunca zaman damgalarını da etkinleştirmek istiyorsanız, komutu aşağıdaki gibi kullanabilirsiniz.

dmesg -Tx –follow

9.  Raw mesaj arabelleğini görüntülemek

Raw Message Buffer (Ham mesaj arabelleği) görüntülemek için, dmesg komutunda -r seçeneğini kullanabilirsiniz.

dmesg -r

10.  dmesg komutunu syslog kullanmaya zorlama

dmesg’in, verilerini /dev/kmsg yerine syslog’dan almasını istediğimiz bazı durumlar olabilir. Bunu, -S seçeneği kullanarak kolayca gerçekleştirilebilirsiniz.

dmesg -S

dmesg komut günlükleri, /var/log/dmesg dosyasında saklanır.

Gördüğünüz gibi bu komutla, sistemle ilgili birçok mesajı görebilir ve problem çözme adımlarında neler yapmanız gerektiğine dair ön bilgiler edinebilirsiniz.

Yararlı olması dileğiyle.

Yusuf İşleyen