`cat / proc / kmsg` выводит неработающий текст

7604
Vi.

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

4
Смотрите этот ответ: http://stackoverflow.com/questions/1783630/how-to-monitor-the-syslogprintk-in-a-lkm Randolf Richardson 13 лет назад 0
Кроме того, эта веб-страница указывает, что это кольцевой буфер, поэтому «tail -f» и друзья могут работать не так хорошо (вместо этого используйте «dmesg», хотя это не будет контролировать, как «tail -f»): http: / /www.techpulp.com/blog/tag/prockmsg/ Randolf Richardson 13 лет назад 0
Начиная с Linux 3.5, был реализован новый интерфейс `/ dev / kmsg`, который позволяет нескольким процессам читать журнал ядра без повреждения, и` cat / dev / kmsg` будет автоматически следовать за новыми записями. (* util-linux * 2.22 также реализует `dmesg --follow`.) grawity 11 лет назад 2

2 ответа на вопрос

2
pfalcon

Кажется, что вывод cat /proc/kmsgискажен, потому что могут быть другие потребители данных регистрации ядра, такие как syslogd и friends. Для меня выходные символы чередуются с cat или syslogd (пробовал в Ubuntu 12.04). Смотрите также этот ответ: https://stackoverflow.com/a/9477776/496009

Я могу себе представить, cat /proc/kmsgбудет ли надежно работать при загрузке в нетронутой системе (например, ядро ​​загружается с init=/bin/shаргументом). В противном случае использование dmesgкоманды для чтения журнала ядра, как ожидается, будет проще.

Есть ли dmesg, который печатает все сообщения непрерывно (ожидайте `watch" dmesg | tail "`)? Vi. 11 лет назад 0
@Vi .: Если вы используете ядро ​​Linux ≥ 3.5, вы должны быть в состоянии `cat / dev / kmsg` или даже` dmesg --follow` (требуется util-linux ≥ 2.22). В старых системах ваш единственный выбор - `tail -f` файлы системного журнала в` / var / log`. grawity 11 лет назад 2
0
user3913384

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.

Я не думаю, что это из-за этих персонажей. Vi. 8 лет назад 0

Похожие вопросы