Tak, wszystko to ma związek z logowaniem. Nie, nie ma to nic wspólnego z poziomem pracy lub „pierścieniem ochronnym”.
Jądro przechowuje swoje dzienniki w buforze pierścieniowym. Głównym tego powodem jest to, że dzienniki z uruchamiania systemu są zapisywane, dopóki demon syslog nie będzie miał możliwości ich uruchomienia i zebrania. W przeciwnym razie przed uruchomieniem demona syslog nie byłoby żadnych zapisów. Zawartość tego bufora pierścieniowego można wyświetlić w dowolnym momencie za pomocą dmesg
polecenia, a jego zawartość jest również zapisywana /var/log/dmesg
w momencie uruchamiania demona syslog.
Wszystkie dzienniki, które nie pochodzą z jądra, są wysyłane, ponieważ są generowane do demona syslog, więc nie są przechowywane w żadnych buforach. Dzienniki jądra są również pobierane przez demona syslog podczas ich generowania, ale są one nadal zapisywane (niepotrzebnie, prawdopodobnie) w buforze pierścieniowym.
Poziomy dziennika można udokumentować na stronie podręcznika syslog (3) i są one następujące:
- LOG_EMERG : system nie nadaje się do użytku
- LOG_ALERT : należy natychmiast podjąć działanie
- LOG_CRIT : warunki krytyczne
- LOG_ERR : warunki błędu
- LOG_WARNING : warunki ostrzegawcze
- LOG_NOTICE : normalny, ale istotny warunek
- LOG_INFO : komunikat informacyjny
- LOG_DEBUG : komunikat na poziomie debugowania
Każdy poziom ma być mniej „ważny” niż poprzedni. Plik dziennika, który rejestruje dzienniki na jednym poziomie, będzie także rejestrował dzienniki na wszystkich ważniejszych poziomach.
Różnica między /var/log/kern.log
i /var/log/mail.log
(na przykład) nie dotyczy poziomu, ale obiektu lub kategorii. Kategorie są również udokumentowane na stronie podręcznika.
/var/log/kern.log
i/var/log/dmesg
powinien mieć taką samą treść jak komunikaty jądra? Ale ich zawartość nie jest taka sama./var/log/kern.log
powinien zawieraćdmesg
treść (być może sformatowaną inaczej) niż czas uruchamiania. Chyba że minęło dużo czasu od uruchomienia i zawartość została wyparta.dmesg
drukuje bieżące wartości bufora pierścieniowego jądra, poprzednie / stare wartości bufora są przechowywane w/var/log/dmesg
. Tak więcdmesg
wynik jest tylko najnowszym podzbiorem/var/log/dmesg
treści i są one różne. Czy zatem zawartość/var/log/dmesg
(niedmesg
jak w komentarzu) jest/var/log/kernel.log
taka sama?/var/log/dmesg
zawartość będzie prawdopodobnie pod koniec/var/log/kern.log
. Znacznie później go nie będzie, będzie się obracać. Zasadniczo/var/log/kern.log
będzie zawierać dzienniki, które są starsze niż jakakolwiek migawka bufora pierścienia dziennika jądra, a także dzienniki, które są nowsze niż migawka.Aby odpowiedzieć przynajmniej na pierwszą część pytania na temat
dmesg
:/var/log/dmesg
przechowuje zawartość „bufora pierścieniowego jądra”, bufora pamięci utworzonego przez jądro podczas rozruchu, w którym przechowuje dane dziennika, które generuje, gdy tylko przejdziesz przez fazę bootloadera.Bufor pierścieniowy jest specjalnym rodzajem bufora, który zawsze ma stały rozmiar, usuwając najstarsze wiadomości, gdy przychodzą nowe wiadomości. Tekst zapisany w buforze pierścieniowym jądra jest tym, co widzisz, migając obok ciebie na ekranie, gdy uruchamiasz Uniksa jak maszyna w trybie konsoli (bez ekranu powitalnego, Plymouth). Dziennik jądra jest przechowywany w buforze pamięci, więc dzienniki rozruchowe muszą gdzieś być, dopóki system nie uruchomi się do momentu, w którym
syslog
demon może przejąć kontrolę.dmesg
pod Linuksem jest częścią niezbędnegoutil-linux
pakietu narzędzi do konserwacji systemu opublikowanego przez kernel.org. Wedługdmesg(1)
strony man,Zobacz: http://www.computerhope.com/unix/dmesg.htm
W obszarze „systemd” init można użyć tego polecenia do wydrukowania bufora pierścieniowego jądra
# journalctl --dmesg or journalctl -k
:, dzięki za poprawkę @don_crisstiWydanie polecenia
dmesg | grep -i ethernet
na przykład spowoduje przeanalizowanie bufora pierścieniowego jądra dla łańcucha „ethernet”.Mam nadzieję, że to pomoże przynajmniej w pierwszej części twojego zapytania.
źródło