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

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10153-02 (очередное обновление 3.8)

1. Введение

systemd – системный менеджер, управляющий операционной системой и службами. При загрузке операционной системы первым запускается менеджер systemd, который запускает остальную часть операционной системы (далее ОС).

Менеджер systemd:

  • запускает и останавливает операционную систему;
  • управляет запуском и остановкой служб;
  • монтирует файловые системы;
  • с помощью службы journald ведёт журнал работы операционной системы и служб.

Менеджер systemd оперирует так называемыми юнитами (unit). Юниты отражают различные сущности операционной системы: службы, устройства, точки монтирования и др. Для каждой сущности используется свой тип юнита.

Информация о юнитах хранится в юнит-файлах, в которых описано: какую запускать программу при запуске юнита, при каких условиях запускать и останавливать программу, зависимости от других юнитов и т. д.

Название юнит-файла состоит из названия юнита и суффикса. Суффикс совпадает с типом юнита. Например, юнит-файл для запуска SSH-службы называется "ssh.service". В командах управления юнитами можно указывать как название юнита, так и название юнит-файла.

Юниты делятся на системные и пользовательские. Системные юниты используются для запуска системных программ и запускаются от имени привилегированного пользователя. Пользовательские – для запуска пользовательских программ от имени обычного пользователя.

Как правило, пользовательские юниты работают, пока пользователь зарегистрирован в системе. Чтобы юниты пользователя запускались при старте ОС и далее работали независимо от того, зарегистрирован пользователь в системе или нет, необходимо использовать команду:

sudo loginctl enable-linger <имя_пользователя>

 Подробнее см. справку "man loginctl" .

2. Типы юнитов

Существует одиннадцать типов юнитов:

Тип юнитаНазначение юнита
service
Управляет службой, программой
socketУправляет локальным IPC или сетевым сокетом
target

Объединяет набор юнитов для достижения какого-либо целевого состояния операционной системы.

Например, юнит для остановки ОС, юнит для перевода ОС в режим восстановления

device

Отражает какое-либо устройство компьютера.

Например, юнит для жёсткого диска, юнит для сетевой карты

mount
Управляет точкой монтирования в файловой системе
automount
Управляет автомонтированием накопительных устройств
timer
Активирует другие юниты по таймеру
swap
Управляет разделом или файлом подкачки
path
Активирует какую-либо службу при изменении объекта файловой системы, находящегося по заданному пути
slice
Объединяет набор юнитов для управления ресурсами, потребляемыми этими юнитами
scope

Управляет службой, запущенной НЕ менеджером systemd.

Scope-юнит создаётся программно через API-интерфейс менеджера systemd. Этим он отличается от service-юнита, который описывается с помощью юнит-файла

3. Управление операционной системой

3.1. Состояния операционной системы

Операционная система находится в одном из состояний: выключена, многопользовательский графический режим, однопользовательский текстовой режим, и т. п. Для перевода ОС в то или иное целевое состояние используются target-юниты. Целевые состояния системы являются более гибким аналогом уровней выполнения (runlevel) традиционной программы запуска операционной системы init.

Также есть специальные target-юниты, которые запускаются при определённом событии и не влияют на целевое состояние ОС. Например, при подключении к компьютеру принтера автоматически активируется юнит printer.target (см. справку "man systemd.special"). 

Для отображения текущего целевого состояния ОС (запущенного target-юнита) используется команда:

systemctl get-default

Для перевода ОС в целевое состояние используется команда:

sudo systemctl isolate <название_target_юнита>

При запуске команды:

  • запускаются все юниты (если они ещё не запущены), которые соответствуют целевому состоянию операционной системы;
  • останавливаются все остальные юниты. За исключением тех, которые имеют соответствующую настройку.

Для части юнитов есть укороченные команды без использования команды "isolate". Некоторые из них приведены в следующих подразделах текущего раздела.

Примеры target-юнитов:

ЮнитЦелевое состояние ОС
default.target

Юнит, который используется для запуска ОС.

Обычно, это ссылка на graphical.target или multi-user.target

graphical.targetМногопользовательский графический режим ОС
multi-user.targetМногопользовательский текстовой режим ОС
rescue.targetРежим восстановления операционной системы
reboot.targetПерезагрузка ОС
poweroff.targetВыключение ОС с выключением питания компьютера

3.2. Остановка и перезагрузка операционной системы

Для остановки ОС (перевода в целевое состояние poweroff.target) используется команда:

sudo systemctl poweroff

Для перезагрузки ОС (перевода в целевое состояние reboot.target) используется команда:

sudo systemctl reboot

3.3. Режим восстановления операционной системы

В каких-то случаях может потребоваться режим восстановления ОС, при котором запущено минимальное количество процессов.

Для перехода в режим восстановления ОС используется команда:

sudo systemctl rescue

После восстановления необходимо перевести ОС в нормальный режим работы. Для этого используется команда:

sudo systemctl default

Для просмотра текущего режима работы ОС используется команда:

sudo systemctl is-system-running

Возможные режимы работы ОС:

Режим ОСОписание

initializing

Ранний этап загрузки ОС
starting
Поздний этап загрузки ОС
running
Нормальный режим работы ОС
degraded
ОС работает в нормальном режиме, но у каких-то юнитов есть ошибки
maintenance
ОС работает в режиме восстановления
stopping
Идёт процесс остановки работы менеджера systemd
offline
Менеджер systemd не запущен
unknown
Режим работы ОС не определён из-за нехватки ресурсов или по иной причине

4. Управление юнитами

4.1. Запуск и остановка юнита

Для запуска (активирования) юнита используется команда:

sudo systemctl start <название_юнита>

Для остановки (деактивирования) юнита используется команда:

sudo systemctl stop <название_юнита>

Для перезапуска юнита, т.е для остановки (если юнит был запущен) и последующего запуска юнита, используется команда:

sudo systemctl restart <название_юнита>

4.2. Автозапуск юнита

Когда активируется target-юнит, менеджер systemd автоматически запускает другие юниты, которые связаны с активированным target-юнитом.

Так, при запуске ОС активируется юнит default.target, который переводит ОС в целевое состояние по умолчанию. При этом автоматически будут запущены все юниты, которые связаны с юнитом default.target.

Другой пример – при подключении принтера к компьютеру автоматически активируется специальный юнит printer.target. При этом автоматически будет запущен юнит cups.service, связанный с юнитом printer.target.

Чтобы связать юнит с target-юнитом, необходимо:

  • в юнит-файле в опции "WantedBy=" указать название target-юнита;
  • включить автозапуск юнита (если он не включен) с помощью команды "systemctl enable <название_юнита>".

Для включения автозапуска юнита используется команда:

sudo systemctl enable <название_юнита>

Для отключения автозапуска юнита используется команда:

sudo systemctl disable <название_юнита>

4.3. Запуск (активирование) юнита по таймеру

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

Если в момент активации по таймеру юнит уже активен (запущен), то юнит не перезапускается, а остаётся в активном состоянии.

Название активируемого юнит-файла должно иметь суффикс отличный от .timer. Рекомендуется, чтобы названия файлов: активируемого юнита и timer-юнита – совпадали, за исключением суффикса. Например, logrotate.service и logrotate.timer.

Подробнее про timer-юнит см. статью "Использование таймеров systemd вместо заданий cron".

4.4. Отображение информации о юнитах

Для отображения состояния юнита, а также последней информации из журнала работы юнита, используется команда:

sudo systemctl status <название_юнита>
$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
  Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
  Active: active (running) since Mon 2025-08-04 08:10:10 MSK; 8h ago
    Docs: man:sshd(8)
          man:sshd_config(5)
Main PID: 1242 (sshd)
   Tasks: 1 (limit: 2239)
  Memory: 1.2M
     CPU: 15ms
  CGroup: /system.slice/ssh.service
          └─1242 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

авг 04 08:10:10 alse-vanilla-gui sshd[1242]: Server listening on 0.0.0.0 port 22.
авг 04 08:10:10 alse-vanilla-gui sshd[1242]: Server listening on :: port 22.
авг 04 08:10:10 alse-vanilla-gui systemd[1]: Starting OpenBSD Secure Shell server...
авг 04 08:10:10 alse-vanilla-gui systemd[1]: Started OpenBSD Secure Shell server.

где

  • в строке "  Loaded:" отображается:
        - /lib/systemd/system/ssh.service – путь к юнит-файлу;
        - enabled (после пути к юнит-файлу) – означает, что включён автозапуск юнита;
  • в строке "  Active:" отображается:
        - active (running) – означает, что юнит активен (служба запущена).

Для отображения иерархического дерева запущенных юнитов используется команда:

sudo systemctl status
$ sudo systemctl status 
rbta-ekb-lt-123456.astralinux.ru
    State: degraded
    Units: 523 loaded (incl. loaded aliases)
     Jobs: 0 queued
   Failed: 4 units
    Since: Tue 2025-08-05 08:50:54 +05; 7h ago
  systemd: 252.17-1~deb12u1astra.se3+ci2
   CGroup: /
           ├─1454 /opt/kaspersky/kesl/libexec/kesl
           ├─init.scope
           │ └─1 /sbin/init splash
           ├─system.slice
           │ ├─ModemManager.service
           │ │ ├─1334 /usr/sbin/ModemManager
           │ │ └─2478 /usr/libexec/mbim-proxy
           │ ├─NetworkManager.service
           │ │ ├─2071 /usr/sbin/NetworkManager --no-daemon
           │ │ ├─7647 /usr/lib/NetworkManager/nm-openconnect-service --bus-name org.freedesktop.NetworkManager.openconnect.Connection_4
           │ │ └─7737 /usr/sbin/openconnect --servercert pin-sha256:qTme6hdkT1xgmWjngi0kAL8AShIN2kAn5CfzpT/I/rI= --syslog --cookie-on-s>
           │ ├─accounts-daemon.service
           │ │ └─1647 /usr/libexec/accounts-daemon
           │ ├─acpid.service
           │ │ └─1235 /usr/sbin/acpid
           │ ├─assistant.service
           │ │ ├─  2902 /opt/assistant/bin/asts
           │ │ ├─  5642 sudo -u root -H /opt/assistant/bin/astrct -ISS:1 -PID:2902 -PIPE:/tmp/assistant/pipes/28CDA78A75FA4537BC586BE86>
           │ │ ├─  5654 /opt/assistant/bin/astrct -ISS:1 -PID:2902 -PIPE:/tmp/assistant/pipes/28CDA78A75FA4537BC586BE86F7CEB2E_63A9F0EA>
           │ │ ├─  6081 sudo -u sbutakov -H /opt/assistant/bin/astrct -ISS:1 -PID:2902 -PIPE:/tmp/assistant/pipes/28CDA78A75FA4537BC586>
           │ │ ├─  6083 /opt/assistant/bin/astrct -ISS:1 -PID:2902 -PIPE:/tmp/assistant/pipes/28CDA78A75FA4537BC586BE86F7CEB2E_A92E540C>
           │ │ └─114451 ps ax -o stat,comm
           │ ├─astra-event-diagnostics-healthcheck.service
           │ │ └─4711 /usr/bin/python3 /usr/bin/astra-event-diagnostics --healthcheck -c /etc/astra-event-diagnostics/astra-event-diagn>
           │ ├─auditd.service
           ...

5. Журнал работы операционной системы и служб

Служба journald собирает и хранит журнал работы операционной системы и служб (юнитов).

Журнал хранятся в двоичном виде.

Параллельно с journald может работать другая служба журналирования, например, syslog-ng, чтобы вести набор классических текстовых журналов в каталоге /var/log/.

Подробнее о команде просмотра журнала см. справку "man journalctl" и статью "Анализ журналов системных служб Astra Linux".

Для отображения всех записей журнала, начиная с самой старой, используется команда:

sudo journalctl

Для отображения записей журнала, относящихся к юниту, используется команда:

sudo journalctl -u <название_юнита>


С помощью опций, добавляемых к команде journalctl, можно настроить отображение журнала:

ОпцияОписание
-n [количество_записей]

Вывести самые последние записи журнала.

Где [количество_записей] – число, отражающее количество выводимых записей.
Если [количество_записей] не указано, то будет выведено 10 записей.

Чтобы прервать выполнение команды, необходимо нажать клавишу <Q>

-f

Вывести самые последние записи журнала, затем выводить записи по мере их поступления в журнал.

По умолчанию выводится 10 записей.
Чтобы вывести иное количество записей, необходимо использовать опцию "-n [количество_записей]".

Чтобы прервать выполнение команды, необходимо нажать сочетание клавиш <CTRL+C>

-r

Изменить порядок вывода записей на обратный, чтобы самые новые записи выводились самыми первыми

6. Расположение файлов и каталогов менеджера systemd

Файл или каталогОписание
/etc/systemd/Каталог с файлами настроек *.conf менеджера systemd
/etc/systemd/system/

Каталог с автозапускаемыми системными юнит-файлами.

Как правило, в каталоге создаются ссылки на юнит-файлы из каталога /lib/systemd/system/, а не создаются свои юнит-файлы

/etc/systemd/user/

Каталог с автозапускаемыми пользовательскими юнит-файлами.

Как правило, в каталоге создаются ссылки на юнит-файлы из каталога /usr/lib/systemd/user/, а не создаются свои юнит-файлы

/lib/systemd/system/

(фактически это /usr/lib/systemd/system/)

Каталог доступных системных юнит-файлов.

В каталог устанавливаются системные юнит-файлы во время установки программ

/usr/lib/systemd/user/

Каталог доступных пользовательских юнит-файлов.

В каталог устанавливаются пользовательские юнит-файлы во время установки программ

/etc/systemd/journald.conf

Файл с настройками службы журналирования journald

/var/log/journal/<machine-id>/

Каталог для постоянного хранения журнала работы ОС и служб (юнитов).

<machine-id> – уникальный идентификатор локального компьютера. Идентификатор хранится в файле /etc/machine-id

/run/log/journal/<machine-id>/

Каталог для временного хранения журнала работы ОС и служб (юнитов).

Каталог используется, если не доступен каталог /var/log/journal/  (например, во время старта ОС).

<machine-id> – уникальный идентификатор локального компьютера. Идентификатор хранится в файле /etc/machine-id

  • Нет меток