Информация | ||
---|---|---|
| ||
|
Организация системных служб в Astra Linux
Обновления Astra Linux, выпущенные после очередного обновления 1.5, используют систему управления службами systemd (подробнее см. Systemd). В состав компонент systemd, предоставляемых при установке ОС входят:
- systemd — системная служба управления службами;
- systemctl – инструмент командной строки для управления службами;
systemd-analyze — инструмент командной строки для получения статистики работы служб;
- journald – системная служба ведения журналов служб;
- journalctl — инструмент командной строки для анализа журналов служб.
Инструмент journalctl для анализа журналов системных служб
Общая команда для просмотра журналов:
Command |
---|
sudo journalctl |
Команды выводит все записи из всех журналов начиная с момента последней загрузки ОС. Записи выводятся в порядке регистрации. При просмотре можно использовать клавиши PageUp и PageDown для поэкранного листания, Пробел - для поэкранного последовательного просмотра, Enter — для построчного последовательного просмотра, Q — для выхода. Отметки времени регистрации событий по умолчанию отображаются в локальном времени. Для отображения отметок времени в формате UTC (см. Службы синхронизации времени в Astra Linux) можно использовать опцию --utc:
Command |
---|
sudo journalctl --utc |
Полезной может быть также опция short-precise отображения времени с точностью до микросекунд:
Command |
---|
sudo journalctl --utc -o short-precise |
Блок кода |
---|
мар 18 14:28:46.171881 se10704 kernel: |
или опция short-iso-precise (доступна начиная с очередного обновления x.7):
Command |
---|
sudo journalctl --utc -o short-iso-precise |
Блок кода |
---|
2023-03-18T14:28:46.171893+0300 se10704 kernel: |
Для фильтрации сообщений по критичности можно использовать опцию -p с указанием уровня критичности. Для обозначения критичности используются следующие значения:
- 0 — emergency — неработоспособность системы;
- 1 — alerts — предупреждения, требующие немедленного вмешательства;
- 2 — critical — критическое состояние;
- 3 — errors — ошибки;
- 4 — warning — предупреждения;
- 5 — notice — уведомления;
- 6 — info — информационные сообщения;
- 7 — debug — отладочные сообщения.
При указании уровня критичности выводятся все сообщения с указанным и меньшим уровнем. Например если указать значение -p 3, то будут показаны все сообщения с уровнями 3, 2, 1 и 0 (т.е. все сообщения об ошибках).
Источники данных для службы journalctl
Служба journald консолидирует данные из следующих источников:
- сокет /run/systemd/journal/stdout – данные, поступающие от служб systemd;
- устройство /dev/kmsg — журнал ядра;
- устройство /dev/log (/run/systemd/joural/dev-log) — данные приложений, поступающие через службу syslog.
Сохранение журналов после перезагрузок
При настройках, заданных по умолчанию служба journald перезаписывает журналы при каждой перезагрузке. Соответственно, вызов инструмента journalctl выведет журнал начиная с момента последней загрузки системы. Для сохранения журналов на постоянной основе (после перезагрузки) следует создать каталог /var/log/journal/, в котором и будут на постоянной основе сохраняться журналы. Для управления постоянным сохранением журналов используется параметр Storage в файле /etc/systemd/journald.conf. По умолчанию этот параметр не задан (имеет значение Auto). При этом каталог постоянного хранения журналов /var/log/journal/:
- используется, если он существует;
- не создается автоматически, и если этого каталога не существует, то журнал будет записываться в /run/log/journal без сохранения между перезагрузками.
Каталог будет /var/log/journal/ создаваться автоматически если значение параметра Storage изменить на persistent и перезапустить systemd-journald.service или перезагрузить ОС. Подробнее см. man journald.conf.
Проверить наличие сохраненных журналов можно командой:
Command |
---|
sudo journalctl --list-boots |
Пример вывода команды:
Блок кода |
---|
-1 98b893e51c0a43249b8b6e824266fc1c Tue 2023-02-28 07:46:21 MSK—Tue 2023-02-28 15:22:02 MSK 0 cdd48e77de394ebca4df162359bfb412 Tue 2023-02-28 15:22:17 MSK—Tue 2023-02-28 15:41:34 MSK |
В примере вывода первое поле представляет собой номер журнала, второе поле - идентификатор загрузки. Далее предоставлен диапазон времени, в течение которого выполнялась запись в журнал. Эти значения можно использовать при выборе журнала для просмотра. Например, просмотреть журнал последней загрузки ОС, можно командой:
Command |
---|
sudo journalctl -b 0 |
Для просмотра журнала предпоследней загрузки:
Command |
---|
sudo journalctl -b -1 |
Фильтрация сообщений
Просмотр сообщений определенной загрузки
Для выбора загрузки для фильтрации сообщений можно использовать опцию -b с указанием номера журнала. Например, просмотреть журнал последней загрузки ОС, можно командой:
Command |
---|
sudo journalctl -b 0 |
Для просмотра журнала предыдущей загрузки:
Command |
---|
sudo journalctl -b -1 |
Просмотр сообщений за определенный период времени
Для задания периодов времени для фильтрации событий при просмотре можно использовать опции --snce (с какого времени) и --until (до какого времени) в сочетании с лексемами “yesterday” (вчера), “today” (сегодня), “tomorrow” (завтра), или “now” (сейчас). Например:
Command |
---|
sudo journalctl --since yesterday |
или
Command |
---|
sudo journalctl --since "2020-12-17" --until "2020-12-18 10:00:00" |
Фильтрация сообщений ядра
Чтобы отдельно просмотреть сообщения ядра используется ключом -k:
Command |
---|
sudo journalctl -k |
Фильтрация сообщений определенных служб и приложений
Для фильтрации сообщений отдельных служб можно использовать опцию -u. Например, для просмотра сообщений службы NetworkManager можно использовать команду:
Command |
---|
sudo journalctl -u NetworkManager.service |
Также можно отфильтровать сообщения приложения, указав его исполняемый файл. Например, для менеджера дисплеев fly-dm:
Command |
---|
sudo journalctl /usr/bin/fly-dm |
или указав конкретный идентификатор процесса:
Command |
---|
sudo journalctl _PID=1 |
Дополнительные опции просмотра
Следить за появлением новых сообщений:
Command |
---|
sudo journalctl -f |
Показать только последние записи:
Command |
---|
sudo journalctl -e |
По умолчанию journalctl отсекает части выводимых строк, не вписывающиеся в экран по ширине. Управление этой возможностью производится значением переменной окружения SYSTEMD_LESS, определяющей опции программы less (программа постраничного просмотра, используемая по умолчанию). По умолчанию переменная имеет значение FRSXMK. Опция S отвечает за перенос строк, длина которых превышает ширину экрана терминала. Если опцию S исключить, то строки не будут обрезаться и прочесть их содержимое можно с помощью клавиш "стрелка влево" и "стрелка вправо". Пример команды:
Command |
---|
sudo SYSTEMD_LESS=FRXMK journalctl |
Ограничение размера журнала
Если журналы сохраняются после перезагрузки, то по умолчанию размер журналов ограничен 10% от объема файлового раздела и максимально может занять 4 Гб дискового пространства. Максимальный объем журнала можно задать явно в параметре SystemMaxUse в файле /etc/systemd/journald.conf.
Удаление журналов
Удалить файлы журналов можно вручную или использовать journalctl. Например:
Удалить журналы, оставив только последние 100 Мб:
Command |
---|
sudo journalctl --vacuum-size=100M |
Удалить журналы, оставив журналы только за последние 7 дней:
Command |
---|
sudo journalctl --vacuum-time=7d |