Просто заставь это @ # $% работать
- Вы хотите напечатать вывод dmesg, постоянно, немедленно
- Dmesg печатает кольцевой буфер ядра (см.
man dmesg
)
- Кольцевой буфер ядра - это специальный файл proc,
/proc/kmsg
(см. man proc
)
- Прочитайте
/proc/kmsg
напрямую, т.е. cat /proc/kmsg
.
Теперь, если вы прочтете дружественное руководство по proc, оно строго предупредит вас, чтобы только один пользователь (который должен быть привилегирован) мог одновременно читать /proc/kmsg
. Независимо от того, какая у вас реализация системного журнала, вы должны это делать, и, вероятно, она работает с dmesg
. Я не знаю, я вне моей лиги здесь, просто перефразируя руководство. Так что, хотя это и есть способ "просто заставь это @ # $% работать", сначала рассмотрим следующие несколько методов.
Утверждена справочная страница: watch + dmesg
В Arch gnu/linux с systemd init * dmesg.log записывается не очень часто, а может, и вовсе? Наилучший способ непрерывного чтения буфера журнала ядра - это watch
. Как-то так должно начаться (настройте количество строк в вашем терминале):
watch 'dmesg | tail -50'
смотреть + dmesg + демон + tail -f
Более запутанное решение может использовать watch для записи вывода dmesg в файл, который вы можете затем использовать с помощью tail -f
. Вы, вероятно, хотели бы, чтобы это работало как демон. Надлежащий демон также будет gzip и вращать журналы. Следующий код bash является непроверенным, неработающим и предназначен только для передачи идеи. Ответ @Brooks Моисея имеет рабочую версию .
watch 'dmesg >> /var/log/dmesg.log | tail -1'
* tangent, потому что это вопрос osx, но когда systemd рядом, не беспокойтесь о dmesg
, используйте journalctl -xf
(возможно, w/ -n 100
чтобы также показать предыдущие 100 строк)