Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Просмотр файлов системных журналов с помощью интерфейса командной строки Linux

Оригинал: Viewing Linux Logs from the Command Line
Автор: Jack Wallen
Дата публикации: 9 декабря 2016 г.
Перевод: А.Панин
Дата перевода: 14 декабря 2016 г.

Просмотр файлов системных журналов с помощью интерфейса командной строки Linux

При возникновении проблем с системой в первую очередь тщательно исследуется содержимое файлов системных журналов. Jack Wallen научит вас делать это.

Если вы администрируете системы Linux, вам рано или поздно придется исследовать файлы системных журналов. В конце концов, они используются для хранения очень важной информации, позволяющей диагностировать причину той или иной неполадки. Фактически, каждый опытный системный администратор без колебаний согласится с тем, что при возникновении той или иной проблемы следует в первую очередь исследовать файлы системных журналов.

Причем вы можете обнаружить в своей системе большое количество таких файлов: это файлы с информацией о событиях, происходящих на уровне системы, ядра ОС, менеджера пакетов программного обеспечения, системы инициализации, веб-сервера Apache, сервера баз данных MySQL… То есть, практически для любого вообразимого системного программного компонента существует свой файл журнала.

Большая часть файлов системных журналов расположена в удобной директории: /var/log. В ней находятся все файлы журналов системы и служб, с которыми вы наверняка будете плотно работать в том случае, если у вас возникнут какие-либо проблемы с системой или с одной из ее основных служб. Файлы с информацией о событиях, происходящих на уровне отдельных приложений с графическим интерфейсом, могут располагаться в различных директориях (например, приложение Thunderbird сохраняет файлы с информацией о событиях аварийного завершения работы в директории "/.thunderbird/Crash Reports"). Путь к директории, в которой будут храниться файлы журнала событий, происходящих на уровне каждого отдельного приложения с графическим интерфейсом, зависит от намерений разработчика этого приложения, а также возможности указания произвольного пути к этой директории.

В данной статье мы сфокусируем свое внимание на файлах системных журналов, так как они чаще всего используются в процессе диагностики Linux-систем. А главный вопрос, на который мы постараемся ответить, звучит следующим образом: "Как просмотреть содержимое этих файлов?".

К счастью, существует несколько подходов к просмотру содержимого файлов системных журналов, каждый из которых связан с использованием интерфейса командной строки системы.

Директория /var/log

Данная директория является одной из наиболее важных директорий Linux-систем. Откройте окно терминала и выполните с помощью него команду cd /var/log. Теперь выполните команду ls и ознакомьтесь со списком всех файлов системных журналов из этой директории (Рисунок 1).

Список файлов из директории /var/log

Рисунок 1: Список файлов из директории /var/log.

А теперь давайте попытаемся получить доступ к содержимому одного из этих файлов.

Просмотр содержимого файла системного журнала с помощью утилиты less

Одним из наиболее важных файлов из директории /var/log является файл syslog. Этот файл содержит все сообщения о системных событиях за исключением сообщений о событиях, связанных с авторизацией. Предположим, что вы хотите просмотреть содержимое этого файла. Для этого вы можете просто выполнить команду less /var/log/syslog. Эта команда позволяет открыть файл системного журнала для чтения сообщений с начала. Вы можете использовать кнопки со стрелками для прокрутки содержимого файла по строкам, пробел для прокрутки содержимого файла по страницам или колесико мыши для быстрой прокрутки его содержимого.

Единственная проблема данного метода заключается в том, что размер файла syslog со временем может стать сравнительно большим; и, ввиду того, что интересующее вас сообщение будет наверняка находиться ближе к его концу, вам может быть неудобно листать строки или страницы до достижения конца файла. Поэтому после открытия файла syslog с помощью утилиты less вы также можете воспользоваться сочетанием клавиш Shift+g для немедленного перехода к концу файла. Конец файла будет обозначен с помощью специальной метки (END). После этого вы сможете пролистать содержимое файла вверх с помощью клавиш со стрелками или колесика мыши и найти интересующее вас сообщение.

Конечно же, такой подход не является самым эффективным.

Просмотр сообщений ядра ОС с помощью утилиты dmesg

Утилита dmesg позволяет получить доступ к содержимому кольцевого буфера, который используется для хранения информации о событиях, происходящих на уровне ядра ОС. По умолчанию данная утилита выводит все сообщения из этого кольцевого буфера. Воспользуйтесь окном терминала для выполнения команды dmesg и убедитесь в том, что все содержимое кольцевого буфера было успешно выведено (Рисунок 2).

Проблема с внешним накопителем с интерфейсом USB требует дополнительного исследования

Рисунок 2: Проблема с внешним накопителем с интерфейсом USB требует дополнительного исследования.

К счастью, существует встроенный механизм, позволяющий выводить лишь сообщения, соответствующие определенному критерию (например, связанные с работой демонов).

Предположим, вам нужно получить сообщения уровня пользователей и вы хотите использовать критерий "user". Для этого достаточно выполнить команду dmesg --facility=user. Если какие-либо из сообщений будут соответствовать этому критерию, они будут выведены.

В отличие от утилиты less, утилита dmesg выведет все содержимое кольцевого буфера и переместит вас в конец вывода. При этом вам ничто не помешает использовать колесико мыши для просмотра содержимого буфера окна терминала (конечно же, если такая функция поддерживается эмулятором терминала). Если же вы хотите передать вывод утилиты dmesg на ввод утилиты less, вы можете воспользоваться следующей командой:

dmesg | less

Приведенная выше команда выведет информацию, переданную утилитой dmesg и позволит вам перемещаться в рамках строк сообщений таким же образом, как и в случае просмотра содержимого обычного файла журнала с помощью утилиты less.

Просмотр содержимого файла системного журнала с помощью утилиты tail

Утилита tail, скорее всего, является одним из наиболее полезных инструментов, для просмотра файлов системных журналов. tail осуществляет вывод завершающих строк текстовых файлов. Таким образом, если вы выполните команду tail /var/log/syslog, будет выведено несколько последних строк из файла системного журнала syslog.

Но подождите, веселье еще не закончилось. Утилита tail поддерживает параметр -f, позволяющий выполнять очень удобный трюк. В случае исполнения команды tail -f /var/log/syslog утилита tail будет отслеживать изменения файла системного журнала и выводить строки, записываемые в него. Это означает, что вы можете отслеживать сообщения, записываемые в файл системного журнала с помощью окна терминала практически в реальном времени (Рисунок 3).

Отслеживание изменений в файле /var/log/syslog с помощью утилиты tail

Рисунок 3: Отслеживание изменений в файле /var/log/syslog с помощью утилиты tail.

Благодаря возможности использования данного трюка утилита tail является незаменимым инструментом для диагностики системных проблем.

Для завершения работы утилиты tail (в режиме отслеживании изменений в файле) достаточно воспользоваться сочетанием клавиш Ctrl+x.

Вы также можете сообщить утилите tail о необходимости отслеживания лишь заданного количества строк. Предположим, что вам нужно получить лишь последние пять строк, записанные в файл системного журнала; в этом случае вы можете воспользоваться следующей командой:

tail -f -n 5 /var/log/syslog

Приведенная выше команда позволяет осуществить отслеживание событий записи строк в файл системного журнала и вывести в окно терминала лишь последние пять записанных в него строк. После записи в файл следующей строки будет осуществлена замена самой первой строки вывода вверху. Данный подход позволяет дополнительно упростить процесс отслеживания изменений в файлах системного журнала. Я настоятельно рекомендую не использовать данный параметр для отслеживания изменений менее чем четырех или пяти строк, так как в этом случае будет осуществляться автоматическая обрезка строк и вы не сможете ознакомиться с полными сообщениями, записываемыми в файл системного журнала.

Существуют и другие инструменты

Вы и сами сможете найти множество других утилит (и даже несколько отличных инструментов с графическим интерфейсом), позволяющих просматривать файлы системных журналов. Обратите внимание на такие утилиты, как more, grep, head, cat, multitail и System Log Veiwer, которые также могут пригодиться в случае возникновения необходимости в работе с файлами системных журналов.