Системные журналы Linux похожи на дневник вашего компьютера. Они записывают всё, что происходит в вашей системе, от загрузки до выключения, и даже ошибки или предупреждения в промежутке между этими событиями. Если вы новичок в Linux, умение читать и интерпретировать эти журналы поможет вам устранять неполадки, отслеживать действия системы и стать более уверенным пользователем Linux.
В этой статье мы рассмотрим:
В конце мы приведём несколько часто задаваемых вопросов с ответами и шпаргалку для быстрого ознакомления.
Давайте начнем!
Системные журналы Linux — это файлы, в которых записываются события и действия, происходящие в вашей системе. Эти журналы создаются операционной системой, приложениями и службами, чтобы помочь администраторам (или таким любопытным пользователям, как вы!) понять, что происходит.
Представьте, что журналы — это чёрный ящик для вашего компьютера. Если что-то пойдёт не так, вы можете проверить журналы, чтобы узнать, что произошло и почему.
Linux генерирует множество типов журналов, каждый из которых служит определённой цели. Вот наиболее распространённые из них:
Эти журналы отслеживают общую активность системы и события. Они записывают сообщения ядра, системных служб и приложений.
/var/log/syslog
./var/log/messages
.
Журналы, связанные с аутентификацией пользователей, такие как попытки входа в систему, использование sudo и доступ по SSH.
/var/log/auth.log
./var/log/secure
.
Помогает в отладке аппаратных неполадок и ошибок, связанных с ядром.
/var/log/kern.log
Журналы, относящиеся к ядру Linux, например, о проблемах с оборудованием или ошибках драйверов./var/log/dmesg
: Сообщения кольцевого буфера ядра, полезные для устранения неполадок с оборудованием и загрузкой.
/var/log/boot.log
: Записывает события, связанные с процессом загрузки системы.
Отдельные приложения хранят журналы в /var/log/
или пользовательских расположениях.
Пример:
/var/log/apache2/
или /var/log/nginx/
: Журналы для веб-серверов, таких как Apache или Nginx./var/log/mysql/
: Журналы для баз данных MySQL.
/var/log/cron
: Журналы для запланированных задач (cron-заданий).
Отслеживает установки и обновления программного обеспечения.
/var/log/dpkg.log
/var/log/dnf.log
Все логи Linux хранятся в каталоге /var/log/. Это центральное хранилище для файлов журналов, и каждый файл журнала имеет определённое назначение, как мы обсуждали выше.
Чтобы просмотреть содержимое этого каталога, откройте свой терминал и запустите:
ls /var/log/
Пример вывода из моей системы Debian 12:
alternatives.log debug.4.gz messages.3.gz alternatives.log.1 dpkg.log messages.4.gz alternatives.log.10.gz dpkg.log.1 openvpn alternatives.log.11.gz dpkg.log.10.gz private alternatives.log.12.gz dpkg.log.11.gz auth.log.3.gz auth.log.4.gz installer runit boot.log journal samba boot.log.1 kern.log speech-dispatcher boot.log.2 kern.log.1 syslog boot.log.3 kern.log.2.gz syslog.1 boot.log.4 kern.log.3.gz syslog.2.gz boot.log.5 kern.log.4.gz syslog.3.gz ...
В системах Linux для управления журналами используются разные инструменты в зависимости от того, используют ли они systemd (современные системы) или syslog (более старые системы).
Большинство современных дистрибутивов Linux (например, Ubuntu, Fedora, CentOS) используют systemd, который поставляется с мощным инструментом под названием journalctl
.
Примечание: вам может потребоваться запустить эти команды от имени
root
или с правамиsudo
пользователя.
Просмотреть все журналы:
journalctl
Пример вывода:
Hint: You are currently not seeing messages from other users and the system. Users in groups 'adm', 'systemd-journal' can see all messages. Pass -q to turn off this notice. Aug 24 11:32:12 debian cinnamon-killer-daemon[2023]: Bound Cinnamon restart to <Control><Alt>Escape. Aug 24 11:32:12 debian dbus-daemon[1720]: [session uid=1000 pid=1720] Activating via systemd: service name='org.bluez.obex' unit='obex.service> Aug 24 11:32:12 debian systemd[1700]: Starting Bluetooth OBEX service... Aug 24 11:32:12 debian obexd[2107]: OBEX daemon 5.55 Aug 24 11:32:12 debian dbus-daemon[1720]: [session uid=1000 pid=1720] Successfully activated service 'org.bluez.obex' Aug 24 11:32:12 debian systemd[1700]: Started Bluetooth OBEX service. Aug 24 11:32:13 debian dbus-daemon[1720]: [session uid=1000 pid=1720] Activating via systemd: service name='org.freedesktop.portal.Desktop' un> Aug 24 11:32:13 debian systemd[1700]: Starting Portal service... [...]
Просмотр журналов в режиме реального времени:
journalctl -f
Нажмите CTRL+C
, чтобы выйти.
Фильтровать журналы по приоритету (например, только по ошибкам):
journalctl -p err
Просмотр журналов для определенной службы (например, SSH):
journalctl -u ssh
Просмотр журналов с момента последней загрузки:
journalctl -b
Фильтровать журналы по времени:
journalctl --since "1 hour ago"
Основные параметры:
-xe
: Показать подробные журналы с пояснениями.--since "yyyy-mm-dd"
: Просмотр журналов с определенной даты.--until "yyyy-mm-dd"
: Просмотр журналов до определенной даты.
В более старых системах Linux (или при минимальной установке) для ведения журнала может использоваться syslog. В этих системах журналы хранятся в виде обычных текстовых файлов в /var/log/
.
Примечание: вам может потребоваться запустить эти команды от имени
root
или с правамиsudo
пользователя.
Просмотр всего файла журнала:
cat /var/log/syslog
Просмотрите последние несколько строк (например, 20) в файле журнала:
tail -n 20 /var/log/auth.log
Следите за файлом журнала в режиме реального времени:
tail -f /var/log/syslog
Найдите конкретные ключевые слова (например, «ошибка» или «неверный пароль»):
grep "error" /var/log/syslog
grep "Failed password" /var/log/auth.log
Со временем журналы могут разрастаться, занимая место на диске. Очищая старые журналы, вы освобождаете место, сохраняя при этом последние журналы для устранения неполадок.
Очистить системные журналы:
sudo journalctl --vacuum-time=7d
Эта команда очищает системные журналы, которые старше 7 дней.
Для очистки журналов старше 30 дней:
sudo journalctl --vacuum-time=30d
Очистка традиционных журналов (несистемных):
sudo truncate -s 0 /var/log/syslog
Эта команда очищает содержимое файла /var/log/syslog
без удаления самого файла.
Если в вашей системе заканчивается место на диске, очистка журналов может помочь. Очистка журналов может привести к удалению конфиденциальной информации, но будьте осторожны — журналы часто необходимы для устранения неполадок.
Рекомендуется использовать такие инструменты, как logrotate
, для автоматизации ротации и удаления журналов.
Вот несколько советов, которые помогут вам разобраться в журналах Linux:
Ищите временные метки:
Каждая запись в журнале имеет временную метку, которая показывает, когда произошло событие. Это полезно для отслеживания проблем.
Сосредоточьтесь на Ошибках и предупреждениях:
Начните с поиска по ключевым словам, таким как «ошибка», «предупреждение» или «сбой». Эти записи часто указывают на проблемы, требующие внимания.
Используйте инструменты для лучшей визуализации:
less
: Просмотр журналов страница за страницей.grep
: Ищите конкретные шаблоны.awk
: Извлекать определенные столбцы или поля из журналов.
Автоматизируйте Мониторинг и ротацию журналов:
Вопрос 1: В чем разница между systemd и syslog?
journalctl
)./var/log/
.
Вопрос 2: Как мне очистить журналы?
Для системных журналов:
sudo journalctl --vacuum-size=100M # Keep only the last 100MB of logs
Для журналов системного журнала:
sudo truncate -s 0 /var/log/syslog # Clear the syslog file
Вопрос 3: Могу ли я удалить файлы журналов?
Да, но будьте осторожны. Удаление файлов журналов может освободить место на диске, но при этом удаляется ценная информация. Вместо этого используйте такие инструменты, как logrotate
для управления журналами.
Файл журнала | Цель |
---|---|
/var/log/syslog | Общие системные журналы (Debian / Ubuntu). |
/var/log/messages | Общие системные журналы (Red Hat/CentOS). |
/var/log/auth.log | Журналы аутентификации (Debian / Ubuntu). |
/var/log/secure | Журналы аутентификации (Red Hat / CentOS). |
/var/log/kern.log | Журналы ядра (оборудование, драйверы и т.д.). |
/var/log/dmesg | Сообщения кольцевого буфера ядра (проблемы с загрузкой и оборудованием). |
/var/log/boot.log | Журналы загрузки системы. |
/var/log/cron | Журналы для заданий cron (запланированные задачи). |
/var/log/apache2/ | Журналы веб-сервера Apache (Debian / Ubuntu). |
/var/log/nginx/ | Журналы веб-сервера Nginx. |
/var/log/mysql/ | Журналы базы данных MySQL. |
/var/log/maillog | Журналы почтового сервера. |
Команда | Описание |
---|---|
cat /var/log/syslog | Отобразите весь файл журнала. |
less /var/log/syslog | Просматривайте журналы постранично. |
tail -n 20 /var/log/syslog | Просмотрите последние 20 строк файла журнала. |
tail -f /var/log/syslog | Следите за файлом журнала в режиме реального времени. |
grep "error" /var/log/syslog | Найдите ключевое слово «ошибка» в журналах. |
dmesg | Просмотр сообщений кольцевого буфера ядра. |
Команда | Описание |
---|---|
journalctl | Просмотрите все системные журналы. |
journalctl -xe | Просмотрите подробные журналы с пояснениями. |
journalctl -f | Следите за журналами в режиме реального времени. |
journalctl -p err | Просмотр журналов с приоритетом «ошибка». |
journalctl -u ssh | Просмотр журналов для службы SSH. |
journalctl --since "2023-10-01" | Просматривайте журналы с определенной даты. |
journalctl --until "2023-10-01" | Просматривайте журналы до определенной даты. |
journalctl --vacuum-time=7d | Очистите журналы старше 7 дней. |
Команда | Описание |
---|---|
sudo journalctl --vacuum-time=7d | Очистите журналы systemd старше 7 дней. |
sudo truncate -s 0 /var/log/syslog | Очистите содержимое файла журнала (несистемного). |
sudo rm /var/log/syslog | Удалите файл журнала (используйте с осторожностью). |
grep "error" /var/log/syslog
.journalctl --since "yyyy-mm-dd"
.tail -f /var/log/syslog
.
Системные журналы Linux содержат важную информацию о системе. Научившись читать и анализировать файлы журналов Linux, вы сможете устранять неполадки, отслеживать производительность системы и лучше понимать, как работает ваша система Linux.
Независимо от того, используете ли вы современный дистрибутив на основе systemd или более старый дистрибутив на основе syslog, инструменты и методы, описанные в этом руководстве, помогут вам уверенно читать и понимать логи Linux.