2015-06-08 2 views
0

Я хочу выполнить команду echo m > /proc/sysrq-trigger и записать ее вывод. Он распечатывает информацию об использовании памяти. Я нахожусь на uClinux на процессоре Blackfin. Всякий раз, когда я выполняю это, выход выходит из последовательного порта, даже если я выполняю его из Telnet-соединения. Я хочу, чтобы иметь возможность записывать его вывод в файл.Как захватить вывод эхо-сигнала на proc

Основываясь на моих выводах, кажется, что он как-то жестко закодирован для использования порта RS-232, а не для стандартного вывода. Идеи?

ответ

1

Фактически он печатается в буфер кольцевого журнала ядра, который доступен как /proc/kmsg (и взят оттуда syslog или аналогичный процесс для печати на консоли).

Вы можете легко извлечь данные из /proc/kmsg, просто читая его:

# cat /proc/kmsg 

Использование Перенаправление файла для записи его в файл:

# cat /proc/kmsg > /tmp/my-memory-info 
+0

Похоже, мне нужно, чтобы начать 'кошки/Proc/kmsg' с повторным направлением, затем выведите 'echo m'. Имеют смысл? Кроме того, еще одна проблема заключается в том, что я получаю полную распечатку в первый раз, но после этого только последняя строка или так, например. '<4> 7180 страниц, не разделяемых или' es не разделяемых'. – Jon

+0

При захвате из '/ proc/kmsg' каждая строка имеет предшествующий ей <6> или <4>, предположительно уровень ведения журнала, поскольку он выходит из буфера журнала. Это не отображается на RS-232. Любой способ избежать этого? – Jon

+0

@Jon: в качестве альтернативы моему более простому подходу вы можете попытаться настроить свой 'syslog'. Например, проверьте '/ etc/rsyslog.conf' (но это работает только для rsyslog). – myaut