Вопрос или проблема
Кто-нибудь знает, где находится вывод команды dmesg
?
Спрашиваю, потому что, когда я вызываю dmesg
, у меня в журнал добавляются многочисленные элементы, которые выглядят как информация трассировки:
p2p: selectChannelForRoam[712] ChannelCount 2 init:SelChannel 11 SelRssi -52 SelRefs 1
[51345.936880]: com.apple.p2p: monitorSteerState[625] No need to roam : channel 153
[51346.093976]: com.apple.p2p: addPeerToSteeringGroup[325] Add Peer : 32:A5:B7:C0:18:83 InfraChan 153 RSSI -58
[51346.937192]: com.apple.p2p: selectChannelForRoam[712] ChannelCount 2 init:SelChannel 11 SelRssi -52 SelRefs 1
[51346.937194]: com.apple.p2p: monitorSteerState[625] No need to roam : channel 153
[51347.603157]: com.apple.p2p: addPeerToSteeringGroup[325] Add Peer : 32:A5:B7:C0:18:83 InfraChan 153 RSSI -57
[51347.603162]: com.apple.p2p: addPeerToSteeringGroup[407] Request Add Mac32:A5:B7:C0:18:83 Channel 153 Changed 0
Вывод команды dmesg
— это стандартный вывод. Ее функция заключается в форматировании внутренних буферов журналирования ядра для стандартного вывода.
Вы можете найти ту же информацию, отформатированную и распределённую внутри множества разных системных журналов, например:
/var/log/system.log
/var/log/asl
Другая команда: syslog
позволяет отображать эти сообщения в реальном времени до того, как они будут распределены syslogd
в соответствующие журнальные файлы. Попробуйте, например:
syslog -w
См. также:
man syslog
Обычно dmesg напрямую читает буфер сообщений ядра.
Вывод dmesg может храниться или не храниться где-либо. Если он хранится, syslogd и, возможно, другие инструменты могут фильтровать его и распределять по разным файлам.
На MacOS вы можете использовать консольное приложение для просмотра всех журналов.
Ответ или решение
На операционной системе macOS поиск местоположения выходных данных команды dmesg
может вызвать вопросы у пользователей, непривычных к ее интерфейсу и системам логирования. Перейдем к анализу и разъяснению этой функции, чтобы понять, где именно находятся эти данные и как с ними работать.
Теория
Команда dmesg
в Unix-подобных операционных системах используется для отображения сообщений ядра (kernel messages). Она читает буфер кольцевой очереди сообщений ядра, который хранит подробности о состоянии системы, запуске и ошибках устройства, нагрузках на сеть, и других критически важных событиях. В macOS, как и в других Unix-системах, эта команда заимствует аналогичное поведение и во многом зависит от подлежащих систем файлов логов.
Выходные данные dmesg
могут казаться неструктурированными на первый взгляд, поскольку содержат широкий спектр сообщений от ядра, включая сетевые события, ошибки драйверов, и информацию о загрузочных процессах системы. Тем не менее, все эти данные жизненно важны для диагностики, отладки и мониторинга системы.
Пример
В представленных данных примерах лога dmesg
, таких как:
p2p: selectChannelForRoam[712] ChannelCount 2 init:SelChannel 11 SelRssi -52 SelRefs 1
[51345.936880]: com.apple.p2p: monitorSteerState[625] No need to roam : channel 153
...
мы видим следы работы протоколов p2p или моделей управления Wi-Fi. Эти строки могут быть чрезвычайно полезны для понимания поведения беспроводного подключения или для отладки сети.
Применение
Исходная команда dmesg
выводит содержимое буфера в стандартный вывод (stdout). Это значит, что информация представляется прямо в терминале пользователя при вызове команды и не сохраняется напрямую в файл. Однако macOS имеет дополнительные инструменты, которые помогают управлять и отслеживать системные журналы.
Использование инструмента syslog
Команда syslog
позволяет пользователям отслеживать системные журналы в реальном времени перед тем, как они будут обработаны и переброшены демоном syslogd
в соответствующие файлы журнала. Чтобы просматривать сообщения в реальном времени, вы можете использовать следующую команду:
syslog -w
Эта команда предоставляет потоковый вывод новых логов, многим чем напоминающий мониторинг в реальном времени. Аналогично, инструмент syslog
может использоваться для фильтрации или поиска специфических сообщений на основании различных критериев.
Доступ через системные журналы
Выходные данные dmesg
, однако, могут так же логироваться и находиться в ряде системных журналов. На macOS обычно логовые файлы могут быть найдены в следующих директориях:
/var/log/system.log
: один из основных системных логов, где отображаются ключевые события./var/log/asl
: Apple System Logs, упакованные Apple в редакционной форме с возможностью запрашивания через команду.
Эти файлы содержат более длительную историю системных событий, и их можно просматривать с помощью стандартных UNIX-команд, таких как cat
, less
или tail
.
Приложение Console
На macOS также доступно графическое приложение Console, предназначенное для взаимодействия с логами. Оно позволяет просматривать все системные журналы, включая ядро, приложения и сетевые сообщения, в удобном и организованном формате. Приложение поддерживает мощные функции поиска и фильтрации по датам и фразам, что значительно облегчает процесс отладки системы.
Заключение
Таким образом, dmesg
на macOS предоставляет важную информацию о состоянии ядра, но оно не хранит выходные данные автономно. Вместо этого пользователи могут полагаться на стандартные системные лог-файлы и приложения типа Console для постоянного мониторинга. Это подходит не только профессионалам IT, но и обычным пользователям, которые хотят ближе познакомиться со своими системами и улучшить диагностику проблем.