Введение
systemd – системный менеджер, управляющий операционной системой GNU/Linux и службами. При загрузке операционной системы первым запускается менеджер systemd, который запускает остальную часть операционной системы (далее ОС).
Менеджер systemd:
- запускает и останавливает операционную систему;
- управляет запуском и остановкой служб;
- монтирует файловые системы;
- ведёт журналы работы операционной системы и служб.
Менеджер systemd оперирует так называемыми юнитами (unit). Юниты отражают различные сущности операционной системы: службы, устройства, точки монтирования и др. Для каждой сущности используется свой тип юнита. Между юнитами имеются зависимости. Менеджер systemd управляет юнитами с учётом этих зависимостей.
Юниты и их состояния
Существует одиннадцать типов юнитов:
| Тип юнитов | Описание |
|---|---|
| service | Управляет службой |
| socket | Управляет локальным IPC или сетевым сокетом |
| target | Объединяет набор юнитов для достижения целевого состояния операционной системы. Например, есть юниты: для остановки ОС, для перевода ОС в режим восстановления |
| device | Отражает какое-либо устройство компьютера. Например, жёсткий диск, сетевая карта. |
| mount | Управляет точкой монтирования в файловой системе |
| automount | Управляет автомонтированием накопительных устройств |
| timer | Активирует другие юниты по таймеру |
| swap | Управляет разделом или файлом подкачки |
| path | Активирует какую-либо службу при изменении объекта файловой системы, находящегося по заданному пути |
| slice | Объединяет набор юнитов для управления потреблением ресурсов этими юнитами |
| scope | Управляет службой, запущенной НЕ менеджером Но, если service-юнит описывается с помощью юнит-файла, то scope-юнит создаётся программно через API-интерфейс менеджера |
Чтобы менеджер systemd смог управлять юнитом, необходимо включить юнит.
При включении в каталоге /etc/systemd/system/ или /etc/systemd/user/ создаётся юнит-файл с настройками юнита. А при отключении юнита этот юнит-файл удаляется. Расширение юнит-файла совпадает с типом юнита. В нижеприведённых командах можно указывать название юнит-файла без расширения.
В подкаталоге system/ создаются юнит-файлы для юнитов системных программ. В подкаталоге user/ – для юнитов пользовательских программ.
Для включения юнита используется команда:
где <unit_name> – название юнит-файла.
Для отключения юнита используется команда:
где <unit_name> – название юнита.
Для проверки включённого состояния юнита используется команда:
где <unit_name> – название юнита.
Если юнит включён, то команда выведет текст "enabled".
Для отображения иерархического дерева запущенных юнитов используется команда:
Пример вывода команды:
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
Управление операционной системой
Остановка и перезагрузка операционной системы
Для остановки ОС используется команда:
Для перезагрузки ОС используется команда:
Режим восстановления операционной системы
В каких-то случаях может потребоваться режим восстановления ОС, при котором запущено минимальное количество процессов.
Для перехода в режим восстановления ОС используется команда:
После восстановления необходимо перевести ОС в нормальный режим работы. Для этого используется команда:
Для просмотра текущего режима работы ОС используется команда:
Возможные режимы работы ОС:
| Режим ОС | Описание |
|---|---|
initializing | Ранний этап загрузки ОС |
| starting | Поздний этап загрузки ОС |
| running | Нормальный режим работы ОС |
| degraded | ОС работает в нормальном режиме, но у каких-то юнитов есть ошибки |
| maintenance | ОС работает в режиме восстановления |
| stopping | Идёт процесс остановки работы менеджера systemd |
| offline | Менеджер systemd не запущен |
| unknown | Режим работы ОС не определён из-за нехватки ресурсов или по иной причине |
Управление службами (service-юнитами)
Для запуска службы используется команда:
где <service_name> – название службы.
Для остановки службы используется команда:
где <service_name> – название службы.
Для перезапуска службы используется команда:
где <service_name> – название службы.
Для включения автостарта службы во время запуска ОС используется команда:
где <service_name> – название службы.
перечитывание настроек
Для отображения состояния службы, а также последней информации из журнала работы службы, используется команда:
где <service_name> – название службы.
Пример вывода команды:
systemctl status sshd
● 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.
Журналы работы
системные журналы
журналы служб
journalctl --unit=
Расположение файлов и каталогов менеджера systemd
| Файл или каталог | Описание |
|---|---|
| /etc/systemd/ | Каталог с файлами настроек *.conf менеджера systemd |
| /etc/systemd/system/ | Каталог с включёнными юнит-файлами системных программ, т.е. находящимися в состоянии enable. |
| /etc/systemd/user/ | Каталог с включёнными юнит-файлами пользовательских программ, т.е. находящимися в состоянии enable. |
| /lib/systemd/system/ (фактически это /usr/lib/systemd/system/) | Каталог доступных системных юнит-файлов. В каталог устанавливаются системные юнит-файлы во время установки программ |
| /usr/lib/systemd/user/ | Каталог доступных пользовательских юнит-файлов. В каталог устанавливаются пользовательские юнит-файлы во время установки программ |