Системные журналы Linux похожи на дневник вашего компьютера. Они записывают всё, что происходит в вашей системе, от загрузки до выключения, и даже ошибки или предупреждения в промежутке между этими событиями. Если вы новичок в Linux, умение читать и интерпретировать эти журналы поможет вам устранять неполадки, отслеживать действия системы и стать более уверенным пользователем Linux.
В этой статье мы рассмотрим:
- Что такое системные журналы Linux?
- Типы журналов Linux
- Где хранятся логи?
- Как просматривать журналы в Systemd и несистемных системах
- Советы по анализу журналов
- Анализ логов
В конце мы приведём несколько часто задаваемых вопросов с ответами и шпаргалку для быстрого ознакомления.
Давайте начнем!
1. Что такое системные журналы Linux?
Системные журналы Linux — это файлы, в которых записываются события и действия, происходящие в вашей системе. Эти журналы создаются операционной системой, приложениями и службами, чтобы помочь администраторам (или таким любопытным пользователям, как вы!) понять, что происходит.
Представьте, что журналы — это чёрный ящик для вашего компьютера. Если что-то пойдёт не так, вы можете проверить журналы, чтобы узнать, что произошло и почему.
2. Типы журналов Linux
Linux генерирует множество типов журналов, каждый из которых служит определённой цели. Вот наиболее распространённые из них:
A. Системные журналы
Эти журналы отслеживают общую активность системы и события. Они записывают сообщения ядра, системных служб и приложений.
- В Debian/ Ubuntu:
/var/log/syslog
. - О Red Hat/ CentOS:
/var/log/messages
.
B. Журналы аутентификации
Журналы, связанные с аутентификацией пользователей, такие как попытки входа в систему, использование sudo и доступ по SSH.
- Debian/Ubuntu:
/var/log/auth.log
. - Red Hat/CentOS:
/var/log/secure
.
C. Журналы ядра
Помогает в отладке аппаратных неполадок и ошибок, связанных с ядром.
/var/log/kern.log
Журналы, относящиеся к ядру Linux, например, о проблемах с оборудованием или ошибках драйверов./var/log/dmesg
: Сообщения кольцевого буфера ядра, полезные для устранения неполадок с оборудованием и загрузкой.
D. Загрузочные журналы
/var/log/boot.log
: Записывает события, связанные с процессом загрузки системы.
E. Журналы приложений
Отдельные приложения хранят журналы в /var/log/
или пользовательских расположениях.
Пример:
/var/log/apache2/
или/var/log/nginx/
: Журналы для веб-серверов, таких как Apache или Nginx./var/log/mysql/
: Журналы для баз данных MySQL.
F. Журналы Cron
/var/log/cron
: Журналы для запланированных задач (cron-заданий).
G. Журналы диспетчера пакетов
Отслеживает установки и обновления программного обеспечения.
- Debian/Ubuntu:
/var/log/dpkg.log
- RHEL/Fedora:
/var/log/dnf.log
3. Где хранятся логи в Linux?
Все логи 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 ...
4. Как просматривать журналы в системах Linux с Systemd и без Systemd
В системах Linux для управления журналами используются разные инструменты в зависимости от того, используют ли они systemd (современные системы) или syslog (более старые системы).
4.1. Просмотр журналов в системах Systemd
Большинство современных дистрибутивов 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"
: Просмотр журналов до определенной даты.
4.2. Чтение журналов в системах, не связанных с Systemd
В более старых системах 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
5. Очистка журналов
Со временем журналы могут разрастаться, занимая место на диске. Очищая старые журналы, вы освобождаете место, сохраняя при этом последние журналы для устранения неполадок.
Очистить системные журналы:
sudo journalctl --vacuum-time=7d
Эта команда очищает системные журналы, которые старше 7 дней.
Для очистки журналов старше 30 дней:
sudo journalctl --vacuum-time=30d
Очистка традиционных журналов (несистемных):
sudo truncate -s 0 /var/log/syslog
Эта команда очищает содержимое файла /var/log/syslog
без удаления самого файла.
Если в вашей системе заканчивается место на диске, очистка журналов может помочь. Очистка журналов может привести к удалению конфиденциальной информации, но будьте осторожны — журналы часто необходимы для устранения неполадок.
Рекомендуется использовать такие инструменты, как logrotate
, для автоматизации ротации и удаления журналов.
6. Советы по анализу журналов
Вот несколько советов, которые помогут вам разобраться в журналах Linux:
Ищите временные метки:
Каждая запись в журнале имеет временную метку, которая показывает, когда произошло событие. Это полезно для отслеживания проблем.
Сосредоточьтесь на Ошибках и предупреждениях:
Начните с поиска по ключевым словам, таким как «ошибка», «предупреждение» или «сбой». Эти записи часто указывают на проблемы, требующие внимания.
Используйте инструменты для лучшей визуализации:
less
: Просмотр журналов страница за страницей.grep
: Ищите конкретные шаблоны.awk
: Извлекать определенные столбцы или поля из журналов.
Автоматизируйте Мониторинг и ротацию журналов:
- Используйте logrotate для управления ротацией и сжатием файлов журналов. Это поможет вам избежать ручной очистки журналов.
- Настройте fail2ban для отслеживания подозрительной активности в журналах и блокировки вредоносных IP-адресов.
7. Часто задаваемые вопросы
Вопрос 1: В чем разница между systemd и syslog?
- systemd — это современный менеджер систем и служб, который включает в себя собственную систему ведения журналов (
journalctl
). - syslog — это более старая система ведения журналов, которая хранит журналы в виде обычных текстовых файлов в
/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
для управления журналами.
8. Шпаргалка по системным журналам Linux
8.1. Расположение файлов журнала
Файл журнала | Цель |
---|---|
/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 |
Журналы почтового сервера. |
8.2. Просмотр внесистемных журналов
Команда | Описание |
---|---|
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 |
Просмотр сообщений кольцевого буфера ядра. |
8.3. Просмотр системных журналов
Команда | Описание |
---|---|
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 дней. |
8.4. Очистка журналов
Команда | Описание |
---|---|
sudo journalctl --vacuum-time=7d |
Очистите журналы systemd старше 7 дней. |
sudo truncate -s 0 /var/log/syslog |
Очистите содержимое файла журнала (несистемного). |
sudo rm /var/log/syslog |
Удалите файл журнала (используйте с осторожностью). |
8.5. Общие советы по анализу журналов
- Поиск ошибок: Используйте
grep "error" /var/log/syslog
. - Фильтр по дате: Используйте
journalctl --since "yyyy-mm-dd"
. - Мониторинг в режиме реального времени: Используйте
tail -f /var/log/syslog
. - Автоматизация оповещений: настройте Rsyslog или Fail2ban для критических проблем.
Заключение
Системные журналы Linux содержат важную информацию о системе. Научившись читать и анализировать файлы журналов Linux, вы сможете устранять неполадки, отслеживать производительность системы и лучше понимать, как работает ваша система Linux.
Независимо от того, используете ли вы современный дистрибутив на основе systemd или более старый дистрибутив на основе syslog, инструменты и методы, описанные в этом руководстве, помогут вам уверенно читать и понимать логи Linux.