Dmesg Nedir?

Birçok Unix benzeri sistemde, önyükleme işlemi özellikle yoğun bir çekirdek iletisi akışı oluşturur. Birçok yönetim sorunu, önyükleme işlemi sırasında istenen bir donanım aygıtının başarılı bir şekilde numaralandırılıp numaralandırılmadığıyla ilgilidir, bu nedenle arızalı bir aygıtın tanılama süreci, genellikle, çekirdek tanımlama iletisinden önyükleme işleminin sona erdiği noktaya kadar dmesg çıktısını inceleyerek başlar. Sonraki işlemlerde bu arabelleğin üzerine bir mesaj akışı tarafından yazılabileceğinden, Unix benzeri birçok dağıtım, mesaj arabelleğinin önyükleme sonrası bir kopyasını /var/log/dmesg veya benzer güvenli sistem konumunda saklar.

Çalışırken takılan aygıtlardan, özellikle USB aygıtlarından (özellikle küçük sürücüler ) sonra, aygıtın tanınıp tanınmadığını, ilgili bağlantı noktasının veri hızını ( USB 2 ve USB 3.0 fişleri ) belirlemek için mevcut dmesg arabelleğine manuel olarak başvurmak da yaygındır. yan yanadır ve birçok sistemde ayırt edilmesi zordur), hangi sürücünün atandığı ve aygıtın dosya sisteminde nerede görünür hale getirildiği. Birçok dağıtım, cihaz tanıma mesajlarını genellikle bir görev çubuğu aracılığıyla masaüstünde görüntülemeye çalışır ve açılır, ancak bu her zaman güvenilir değildir veya sunulan bilgiler eksiktir.

Geleneksel bir sistemdeki birçok dmesg satırı, bir cihaz adıyla başlar, ardından iki nokta üst üste gelir ve ardından bazı ayrıntılı metinler gelir. Bunlar genellikle kümeler halinde gelir ve aynı cihaz art arda birden çok satırda görünür. Her küme, genellikle, aygıt adıyla ilişkili belirli bir aygıt sürücüsü (veya aygıt tesisi) tarafından tek bir aygıt numaralandırmasıyla ilişkilendirilir.

Bu tür her sürücü veya tesis, teşhis bilgilerini kendi seçtiği formatta yayar ve genellikle en önemli teknik ayrıntıların tümünü yoğun ve gizemli bir notasyonda içerir. Aygıt sürücüsüyle ilişkili kılavuz sayfası bazen mesaj biçimini belgeleyecektir. Örneğin, aygıt adı da0 ( SCSI doğrudan erişim 0 ), USB flash sürücülerle ilişkilendirilen yaygın olarak görülen bir aygıt adıdır. man da komut satırında—sondaki numara olmadan—birçok sistemde bu sürücü sınıfının belgelerini getirir. 

Önyükleme  

İlk başlatıldığında , bir bilgisayar sistemi çekirdeğini belleğe yükler. Bu aşamada , çekirdekte bulunan aygıt sürücüleri , ilgili donanımı çalıştırmak üzere ayarlanır. Bu tür sürücüler ve ayrıca çekirdek içindeki diğer öğeler, hem modüllerin varlığını hem de benimsenen herhangi bir parametrenin değerini bildiren çıktılar ("mesajlar") üretebilir. (Mesajlardaki ayrıntı düzeyini kontrol eden önyükleme parametrelerini belirtmek mümkün olabilir.) Önyükleme işlemi tipik olarak, bir operatörün bunları okuyabilmesi/sindirebilmesi için tek tek mesajların ekranın üst kısmından kaydığı bir hızda gerçekleşir. (Bazı klavye tuşları ekran çıkışını duraklatabilir.) dmesg komutu, sistem başladıktan sonra bu tür mesajların kontrollü bir şekilde gözden geçirilmesini sağlar.

Önyüklemeden sonra  

Sistem tamamen önyüklendikten sonra bile, çekirdek bazen başka teşhis mesajları üretebilir. Bunun ne zaman olabileceğine dair yaygın örnekler, G/Ç cihazlarının hatalarla karşılaşması veya USB cihazlarının çalışırken takılmasıdır . dmesg, bu mesajları daha sonra gözden geçirmek için bir mekanizma sağlar. İlk üretildiğinde, sistem konsoluna yönlendirileceklerdir : eğer konsol kullanımdaysa, bu mesajlar kullanıcı programlarının çıktısı ile karıştırılabilir veya çabucak üzerine yazılabilir.

syntax

dmesg  [options]

dmesg kullanımı

dmesg komutu herhangi bir opsiyon olmadan çalışmaktadır. Ancak, tüm çekirdek iletilerin konuşlandırılmasına neden olur.

dmesg

Komutu seçenek olmadan çalıştırmak, bizim bazı yönetim görevlerini yerine getirmemize pek olanak sağlamaz. Bu yüzden Linux üzerinde, human yani insanların daha kolay anlayabileceği seçenek bir çok komutta bulunmaktadır. -H seçeneği ile less komutu gibi dosya içinde gezinmemizi sağlar. Çıkmak için q tuşuna basmanız yeterlidir.

dmesg -H

Bir dmesg analizi gerçekleştirmenin diğer bir alternatifi,  -w seçeneğidir. Bu sayede, oluşacak yeni mesajları bekler. Şimdi aşağıdaki komutu çalıştıralım.

dmesg -w

Yeni mesajları anlık olarak beklerken, cihaza yeni bir CD/DVD ekleyelim. Ekledikten sonra, anlık olarak aşağıdaki görseldeki gibi bize logları gösterecektir.

Listenin bol ve kalabalık olduğu gözünüze çarpmıştır. Sistemde olan her şeyi dahili olarak analiz etmemek için çıktıyı yalnızca hatalarla ve uyarılarla sınırlamak mümkündür ve bunun için dmesg komutunun sekiz tane desteklenen günlük seviyeleri vardır. Şimdi bunlara bakalım.

  • emerg - sistem kullanılamaz
  • alert - bir an önce önlem alınmalı
  • crit - kritik koşullar
  • err - hata koşulları
  • warn - uyarı koşulları
  • notice - normal ama önemli durum
  • info - bilgilendirici
  • debug - hata ayıklama düzeyinde mesajlar

İhtiyacımıza göre,  tek seviye veya birden fazla seviyeyi aynı anda kullanabiliriz.

sudo dmesg --level emerg
sudo dmesg --level err --level warn 

-T parametresi kullanarak ne zaman bir hata veya uyarı oluştuğunu ayrıntılı olarak bilmek mümkündür. Bunu isteğe bağlı olarak cihazı, bir kelimeyi veya seviyeye göre arama gerçekleştirebilirsiniz.

sudo dmesg -T --level warn
sudo dmesg -T|grep -i ens33 

Dmesg çıktısını sadece kullanıcı alanı mesajlarıyla sınırlamak istiyorsak, -u seçeneğini kullanmalıyız.

sudo dmesg -u 

Ram, HDD, USB, Seri Bağlantı Noktaları gibi, belirli bir aygıtı veya sözcüğü aramak için, çoklu grep kullanarak satırları belirli dizelerle filtrelemek mümkün olacaktır.

sudo dmesg|grep -iE "memory|tty|usb|dma|sda" 

Dmesg olay tamponunu temizleyerek, çekirdek ve bileşenlerinde gerçekleşen her şeyi gerçek zamanlı olarak yönetmenin daha çok yardımcı olduğunu görebilirsiniz.

sudo dmesg -c 

dmesg çıktısı birçok tam ekran olabilir. Bu nedenle, bu çıktı normalde tail, head, less, head veya grep gibi standart metin işleme araçları kullanılarak gözden geçirilir . Çıktı genellikle syslog gibi bir günlük arka plan programı aracılığıyla kalıcı bir sistem günlük dosyasında yakalanır.

Blog'a Dön