Hata mesajını ring buffer dmesg çıktısına yazdıran bir aygıt sürücüsü yazıyorum.
Değiştikçe dmesg
çıktısını görmek istiyorum.
Bunu nasıl yapabilirim?
Tam olarak bu gibi şeyler için tasarlanmış olan watch
komutunu kullanabilirsiniz
watch -n 0.1 "dmesg | tail -n $((LINES-6))"
$((LINES-6))` kısmı terminalinize güzel bir şekilde sığmasını sağlayacaktır.
dmesg`nin çıktısını doğrudan izleyemezsiniz.
Bununla birlikte, modülünüzün doğrudan dmesg'nin halka tamponuna yazdırmaması, bunun yerine çekirdek günlükleme olanaklarını kullanması (daha sonra dmesg
tarafından görüntülenecektir) olasılığı yüksektir. syslog'unuzun bazı aklı başında (örneğin varsayılan) ayarları varsa, bu mesajlar büyük olasılıkla kern.log
günlük dosyasında da görünecektir.
böylece şöyle bir şey yapabilirsiniz:
tail -f /var/log/kern.log
Çekirdeğin günlük mesajlarını almak için dmesg
kullanırsınız.
Çekirdeğin kendisi bir halka tamponuna, yani sadece belleğe kayıt yapar.
Şimdi dmesg
in yaptığı tek şey bu halka tamponunun içeriğinin çıktısını vermektir.
Eğer dmesg -c
yaparsanız, daha sonra halka tamponunu da silecektir.
Bu nedenle while true; do dmesg -c; sleep 1; done
gibi bir şey yaparak çalışmayan dmesg|tail
eşdeğeri bir şey elde edebilirsiniz. Ancak bu halka tamponunu siler ve bu nedenle kök yetkilerine ihtiyaç duyar.
Diğer yol ise halka tamponunun görüntülenmesini sağlayan /proc/kmsg
dosyasıdır. tail -f /proc/kmsg` komutunu kullanabilirsiniz, ancak bu yalnızca bir işleme izin verir ve bu genellikle günlükleme daemonunuzdur. - Görevi mesajları okumak ve okunabilecekleri gerçek dosyalara (genellikle /var/log içinde) yazmaktır. Tüm mesajları tek bir dosyaya veya farklı bölümleri farklı dosyalara çıktı olarak verecek şekilde yapılandırılabilir. (Ancak yapılandırma sisteminizin günlükleme daemonuna bağlıdır).
Bu nedenle, ihtiyaçlarınıza uygun herhangi bir dosya varsa /var/log
dosyasına bir göz atın ve aksi takdirde günlük daemonunuzu yapılandırın.