4

cat /proc/kmsg is convenient way to follow kernel messages. But the output is unreliable. Example:

< 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)

(I pressed Alt+Sysrq+h thrice: first time it printed broken text without newline. Second time it printed correct text. Third time it has just exited (EOF).

What am I doing wrong? How to follow kernel messages (without dependence of various sysklogd and config files and tail -f).

Alternatively, how to use klogd to just print messages (like cat /proc/kmsg but correct) without any syslogs or klogd: Already running)?

Vi.
  • 17,755

2 Answers2

2

It seems that output of cat /proc/kmsg is garbled because there may be other consumers of kernel logging data, like syslogd and friends. For me, output characters get interleavingly to cat or syslogd (tried on Ubuntu 12.04). See also this answer: https://stackoverflow.com/a/9477776/496009

I may imagine, cat /proc/kmsg would work reliably when booted into a pristine system (for example, kernel booted with init=/bin/sh argument). Otherwise, using dmesg command to read kernel log is expectedly easier.

pfalcon
  • 1,022
0

I was having a problem cat /proc/kmsg exiting prematurely due to it trying to display unprintable characters.

I have found that:

cat -v /proc/kmsg

removes all the unprintable characters from the output and prevents cat from exiting prematurely.

techraf
  • 4,952