dmesg ve loglar
- C kursu
- Uzman
- Ders 5/47
- 5 dk
dmesg ile çekirdek loglarını öğrenirsin.
dmesg ve çekirdek logları
dmesg komutu çekirdek ileti arabelleğini okur ve ekrana basar. Açılıştan bu yana donanım bulma, sürücü yükleme ve hata iletileri burada birikir.
Çekirdek printk fonksiyonuyla log yazar; her ileti bir öncelik seviyesiyle etiketlenir. KERN_EMERG en yüksek, KERN_DEBUG en düşüktür. Kullanıcı alanı syslog ve /var/log dosyalarıyla benzer kayıt tutar. Loglar hem hata ayıklama hem denetim için kritiktir; dmesg -T ile zaman damgalı görünür.
Öncelik seviyeleri ve filtreleme
Çekirdek logları sekiz seviyelidir: KERN_EMERG (0) en yüksek, KERN_DEBUG (7) en düşüktür. Arabellek boyu sınırlıdır; yeni iletiler eskileri iter.
dmesg --level=err ile yalnızca hataları filtreleyebilirsin. printk çağrısında önek seviyeyi belirler: printk(KERN_ERR "hata\n"). Sürücüler hangi seviyede yazacağını dikkatle seçer; çok gürültülü log arabelleği boşaltır. console_loglevel hangi seviyenin konsola yazılacağını denetler.
Uygulama Log seviyelerini yazdır
void print_level(const char *name, int level) fonksiyonunu tanımla; gövdesi printf("[%d] %s\n", level, name); olsun. main içinde bunu ("KERN_EMERG", 0), ("KERN_ALERT", 1), ("KERN_ERR", 3), ("KERN_INFO", 6) ile çağır.
Başlangıç kodu
#include <stdio.h>
// print_level fonksiyonunu tanımla
// KERN_EMERG, KERN_ALERT, KERN_ERR, KERN_INFO için çağır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
void print_level(const char *name, int level) {
printf("[%d] %s\n", level, name);
}
int main(void) {
print_level("KERN_EMERG", 0);
print_level("KERN_ALERT", 1);
print_level("KERN_ERR", 3);
print_level("KERN_INFO", 6);
return 0;
}Beklenen çıktı
[0] KERN_EMERG [1] KERN_ALERT [3] KERN_ERR [6] KERN_INFO
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Çekirdek loglarını hangi komut gösterir?
- dmesg Doğru cevap
- lsmod
- ps
- top
Açıklama: dmesg çekirdek ileti arabelleğini okur.
2 Log seviyelerini eşle
| Kavram | Anlamı |
|---|---|
KERN_EMERG |
Sistem çöküşü |
KERN_ALERT |
Hemen müdahale |
KERN_ERR |
Hata durumu |
KERN_INFO |
Bilgi iletisi |
3 printk seviye önekini tamamla
printk(KERN_____ "sürücü yüklendi
");
printk(KERN_INFO "sürücü yüklendi
");
Açıklama: KERN_INFO bilgi amaçlı iletileri etiketler.