
Linuxové jádro je jádrem operačního systému, který řídí přístup k systémovým prostředkům, jako je CPU, I/O zařízení, fyzická paměť a systémy souborů. Jádro zapisuje různé zprávy do kruhové vyrovnávací paměti jádra během procesu spouštění a při běhu systému. Tyto zprávy obsahují různé informace o provozu systému.
Kruhová vyrovnávací paměť jádra je část fyzické paměti, která obsahuje zprávy protokolu jádra. Má pevnou velikost, což znamená, že jakmile se vyrovnávací paměť zaplní, budou starší záznamy protokolů přepsány.
Soubor dmesg
nástroj příkazového řádku se používá k tisku a ovládání kruhové vyrovnávací paměti jádra v Linuxu a dalších operačních systémech podobných Unixu. Je to užitečné pro zkoumání zaváděcích zpráv jádra a ladění problémů souvisejících s hardwarem.
V tomto tutoriálu probereme základy dmesg
příkaz.
Použití dmesg
Příkaz #
Syntaxe pro dmesg
příkaz je následující:
dmesg [OPTIONS]
Při vyvolání bez jakýchkoli voleb dmesg
zapisuje všechny zprávy z kruhové vyrovnávací paměti jádra na standardní výstup:
dmesg
Ve výchozím nastavení mohou všichni uživatelé spouštět dmesg
příkaz. Na některých systémech však přístup k dmesg
může být omezeno pro uživatele bez oprávnění root. V této situaci při vyvolání dmesg
zobrazí se chybová zpráva jako níže:
dmesg: read kernel buffer failed: Operation not permitted
Parametr jádra kernel.dmesg_restrict
určuje, zda mohou neprivilegovaní uživatelé používat dmesg
pro zobrazení zpráv z vyrovnávací paměti protokolu jádra. Chcete-li omezení odstranit, nastavte jej na nulu:
sudo sysctl -w kernel.dmesg_restrict=0
Výstup obvykle obsahuje mnoho řádků informací, takže je zobrazitelná pouze poslední část výstupu. Chcete-li zobrazit jednu stránku po druhé, přesuňte výstup do obslužného programu pageru, jako je less
nebo more
:
dmesg --color=always | less
--color=always
se používá k zachování barevného výstupu.
Pokud chcete filtrovat zprávy ve vyrovnávací paměti, použijte grep
. Chcete-li například zobrazit pouze zprávy související s USB, zadejte:
dmesg | grep -i usb
dmesg
čte zprávy generované jádrem z /proc/kmsg
virtuální soubor. Tento soubor poskytuje rozhraní k vyrovnávací paměti jádra a lze jej otevřít pouze jedním procesem. Pokud syslog
ve vašem systému běží proces a pokusíte se přečíst soubor pomocí cat
, nebo less
, příkaz se zablokuje.
syslog
démon vypíše zprávy jádra do /var/log/dmesg
, takže můžete také použít tento soubor protokolu:
cat /var/log/dmesg
Formátování dmesg
Výstup #
Soubor dmesg
poskytuje řadu možností, které vám pomohou formátovat a filtrovat výstup.
Jedna z nejpoužívanějších možností dmesg
je -H
(--human
), který umožňuje výstup čitelný pro člověka. Tato možnost vede výstup příkazu do pageru:
dmesg -H
Pro tisk časových razítek čitelných pro člověka použijte -T
(--ctime
) možnost:
dmesg -T
[Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
Formát časových razítek lze také nastavit pomocí --time-format <format>
volba, která může být ctime, reltime, delta, notime nebo iso. Chcete-li například použít delta formát, zadejte:
dmesg --time-format=delta
Můžete také kombinovat dvě nebo více možností:
dmesg -H -T
Chcete-li sledovat výstup dmesg
příkaz v reálném čase použijte -w
(--follow
) možnost:
dmesg --follow
Filtrování dmesg
Výstup #
dmesg
můžete omezit výstup do daných zařízení a úrovní.
Zařízení představuje proces, který zprávu vytvořil. dmesg
podporuje následující funkce protokolu:
kern
- zprávy jádrauser
- zprávy na uživatelské úrovnimail
- poštovní systémdaemon
- systémové démonyauth
- bezpečnostní/autorizační zprávysyslog
- interní zprávy syslogdlpr
- subsystém řádkové tiskárnynews
- podsystém síťového zpravodajství
-f
(--facility <list>
) umožňuje omezit výstup na konkrétní zařízení. Možnost přijímá jednu nebo více zařízení oddělených čárkami.
Chcete-li například zobrazit pouze zprávy jádra a systémových démonů, které byste použili:
dmesg -f kern,daemon
Každá zpráva protokolu je spojena s úrovní protokolu, která ukazuje důležitost zprávy. dmesg
podporuje následující úrovně protokolu:
emerg
- systém je nepoužitelnýalert
- musí být okamžitě přijata opatřenícrit
- kritické stavyerr
- chybové stavywarn
- výstražné podmínkyalert
- normální, ale významný stavinfo
- informačnídebug
- zprávy na úrovni ladění
-l
(--level <list>
) omezuje výstup na definované úrovně. Možnost přijímá jednu nebo více úrovní oddělených čárkami.
Následující příkaz zobrazí pouze chybové a kritické zprávy:
dmesg -l err,crit
Vymazání vyrovnávací paměti vyzvánění #
-C
(--clear
) umožňuje vymazat vyrovnávací paměť vyzvánění:
sudo dmesg -C
Pouze root nebo uživatelé s právy sudo mohou vymazat vyrovnávací paměť.
Chcete-li před vymazáním vytisknout obsah vyrovnávací paměti, použijte -c
(--read-clear
) možnost:
sudo dmesg -c
Pokud chcete uložit aktuální dmesg
přihlásí soubor, než jej vymaže, přesměruje výstup do souboru:
dmesg > dmesg_messages
Závěr č.
Soubor dmesg
umožňuje zobrazit a ovládat vyrovnávací paměť jádra. Může to být velmi užitečné při řešení problémů s jádrem nebo hardwarem.
Zadejte man dmesg
ve vašem terminálu, kde najdete informace o všech dostupných dmesg
možnosti.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.