cat /proc/kmsg
to wygodny sposób na śledzenie komunikatów jądra. Ale wynik jest niewiarygodny. Przykład:
< eoyfl-o-ilF ilaltssI hwflssesJ a hwbctaealatv-psL hwmmr-sg()nc-l-TtssN oeOfso-eitr()so-l-iesQ na ycso-aksae()Umutfref()so-lce-ak()Wiet_e_yr upfrc-ufrZ <6>[640655.817496] SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount force-fb(V) show-blocked-tasks(W) Write_to_dev_sysrq dump-ftrace-buffer(Z)
(Trzy razy nacisnąłem Alt + Sysrq + h: po raz pierwszy wydrukował uszkodzony tekst bez nowej linii. Po raz drugi wydrukował poprawny tekst. Po raz trzeci właśnie wyszedł (EOF).
Co ja robię źle? Jak śledzić komunikaty jądra (bez zależności od różnych plików sysklogd i config i tail -f
).
Alternatywnie, jak używać klogd do drukowania wiadomości (jak cat /proc/kmsg
ale poprawne) bez żadnych syslogów lub klogd: Already running
)?
/dev/kmsg
został zaimplementowany nowy interfejs, który pozwala wielu procesom na odczyt dziennika jądra bez uszkodzenia icat /dev/kmsg
automatycznie śledzi nowe wpisy. (także util-linux 2.22dmesg --follow
.)Odpowiedzi:
Wygląda na to, że dane wyjściowe
cat /proc/kmsg
są zniekształcone, ponieważ mogą istnieć inni konsumenci danych logowania do jądra, na przykład syslogd i przyjaciele. Dla mnie znaki wyjściowe są przeplatane do cat lub syslogd (wypróbowane na Ubuntu 12.04). Zobacz także tę odpowiedź: https://stackoverflow.com/a/9477776/496009Mogę sobie wyobrazić,
cat /proc/kmsg
że działałby niezawodnie po uruchomieniu w nieskazitelnym systemie (na przykład jądro uruchomione zinit=/bin/sh
argumentem). W przeciwnym razie użyciedmesg
polecenia do odczytu dziennika jądra jest prawdopodobnie łatwiejsze.źródło
watch "dmesg | tail"
)?cat /dev/kmsg
a nawetdmesg --follow
(wymaga util-linux ≥ 2.22). W starszych systemach jedynym wyborem sątail -f
pliki syslog w/var/log
.Miałem problem
cat /proc/kmsg
z przedwczesnym wyjściem, ponieważ próbowałem wyświetlić znaki niedrukowalne.Odkryłem, że:
usuwa wszystkie niedrukowalne znaki z wyjścia i zapobiega
cat
przedwczesnemu wyjściu.źródło