`cat /proc/kmsg` выводит неработающий текст
cat /proc/kmsg
это удобный способ следить за сообщениями ядра. Но вывод ненадежен. Пример:
< 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)
(Я нажал Alt+Sysrq+h трижды: в первый раз он напечатал поврежденный текст без перевода строки. Во второй раз он напечатал правильный текст. В третий раз он только что вышел (EOF).
Что я делаю неправильно? Как следить за сообщениями ядра (вне зависимости от различных файлов sysklogd и config и tail -f
).
В качестве альтернативы, как использовать klogd для печати сообщений (например, cat /proc/kmsg
но правильно) без каких-либо системных журналов или klogd: Already running
)?
2 ответа
Кажется, что выход cat /proc/kmsg
искажен, потому что могут быть другие потребители данных регистрации ядра, такие как syslogd и friends. Для меня выходные символы чередуются с cat или syslogd (пробовал в Ubuntu 12.04). Смотрите также этот ответ: https://stackoverflow.com/a/9477776/496009
Я могу представить, cat /proc/kmsg
будет надежно работать при загрузке в нетронутой системе (например, ядро загружается с init=/bin/sh
аргумент). В противном случае, используя dmesg
Команда для чтения журнала ядра, как ожидается, проще.
У меня была проблема cat /proc/kmsg
преждевременный выход из-за попытки отображения непечатных символов.
Я обнаружил, что:
cat -v /proc/kmsg
удаляет все непечатаемые символы из вывода и предотвращает cat
от преждевременного выхода.