Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12

Организация системных служб в Astra Linux

Обновления Astra Linux, выпущенные после очередного обновления 1.5, используют систему управления службами systemd (подробнее см. Systemd). В состав компонент systemd, предоставляемых при установке ОС входят:

  • systemd — системная служба управления службами;
  • systemctl – инструмент командной строки для управления службами;
  • systemd-analyze — инструмент командной строки для получения статистики работы служб;

  • journald – системная служба ведения журналов служб;
  • journalctl — инструмент командной строки для анализа журналов служб.

Инструмент journalctl для анализа журналов системных служб

Общая команда для просмотра журналов:

sudo journalctl
Команды выводит все записи из всех журналов начиная с момента последней загрузки ОС. Записи выводятся в порядке регистрации. При просмотре можно использовать клавиши PageUp и PageDown для поэкранного листания, Пробел - для поэкранного последовательного просмотра, Enter — для построчного последовательного просмотра, Q — для выхода. Отметки времени регистрации событий по умолчанию отображаются в локальном времени. Для отображения отметок времени в формате UTC (см. Службы синхронизации времени в Astra Linux) можно использовать опцию --utc:
sudo journalctl --utc
Полезной может быть также опция short-precise отображения времени с точностью до микросекунд:
sudo journalctl --utc -o short-precise

формат:
мар 18 14:28:46.171881 se10704 kernel:

или опция short-iso-precise (доступна начиная с очередного обновления x.7):

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.

Проверить наличие сохраненных журналов можно командой:

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

В примере вывода первое поле представляет собой номер журнала, второе поле - идентификатор загрузки. Далее предоставлен диапазон времени, в течение которого выполнялась запись в журнал. Эти значения можно использовать при выборе журнала для просмотра. Например, просмотреть журнал последней загрузки ОС, можно командой:

sudo journalctl -b 0
Для просмотра журнала предпоследней загрузки:
sudo journalctl -b -1

Фильтрация сообщений

Просмотр сообщений определенной загрузки

Для выбора загрузки для фильтрации сообщений можно использовать опцию -b с указанием номера журнала. Например, просмотреть журнал последней загрузки ОС, можно командой:

sudo journalctl -b 0
Для просмотра журнала предыдущей загрузки:
sudo journalctl -b -1

Просмотр сообщений за определенный период времени

Для задания периодов времени для фильтрации событий при просмотре можно использовать опции --snce (с какого времени) и --until (до какого времени) в сочетании с лексемами “yesterday” (вчера), “today” (сегодня), “tomorrow” (завтра), или “now” (сейчас). Например:

sudo journalctl --since yesterday
или
sudo journalctl --since "2020-12-17" --until "2020-12-18 10:00:00"

Фильтрация сообщений ядра

Чтобы отдельно просмотреть сообщения ядра используется ключом -k:

sudo journalctl -k

Фильтрация сообщений определенных служб и приложений

Для фильтрации сообщений отдельных служб можно использовать опцию -u. Например, для просмотра сообщений службы NetworkManager можно использовать команду:

sudo journalctl -u NetworkManager.service
Также можно отфильтровать сообщения приложения, указав его исполняемый файл. Например, для менеджера дисплеев fly-dm:
sudo journalctl /usr/bin/fly-dm
или указав конкретный идентификатор процесса:
sudo journalctl _PID=1

Дополнительные опции просмотра

Следить за появлением новых сообщений:

sudo journalctl -f
Показать только последние записи:
sudo journalctl -e
По умолчанию journalctl отсекает части выводимых строк, не вписывающиеся в экран по ширине. Управление этой возможностью производится значением переменной окружения SYSTEMD_LESS, определяющей опции программы less (программа постраничного просмотра, используемая по умолчанию). По умолчанию переменная имеет значение FRSXMK. Опция S отвечает за перенос строк, длина которых превышает ширину экрана терминала. Если опцию S исключить, то строки не будут обрезаться и прочесть их содержимое можно с помощью клавиш "стрелка влево"  и "стрелка вправо". Пример команды:
sudo SYSTEMD_LESS=FRXMK journalctl

Ограничение размера журнала

Если журналы сохраняются после перезагрузки, то по умолчанию размер журналов ограничен 10% от объема файлового раздела и максимально может занять 4 Гб дискового пространства. Максимальный объем журнала можно задать явно в параметре SystemMaxUse в файле  /etc/systemd/journald.conf.

Удаление журналов

Удалить файлы журналов можно вручную или использовать journalctl. Например:
Удалить журналы, оставив только последние 100 Мб:

sudo journalctl --vacuum-size=100M
Удалить журналы, оставив журналы только за последние 7 дней:
sudo journalctl --vacuum-time=7d