Введение

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

Менеджер systemd:

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

Типы юнитов

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

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

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

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

device

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

Например, жёсткий диск, сетевая карта.

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

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

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


Расширение юнит-файла совпадает с типом юнита. В командах управления юнитами можно указывать название юнит-файла без его расширения.

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

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

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

sudo systemctl poweroff


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

sudo systemctl reboot

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

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

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

sudo systemctl rescue


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

sudo systemctl default


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

sudo systemctl is-system-running

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

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

initializing

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

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

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

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

sudo systemctl start <unit_name>

где <unit_name> – название юнита.


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

sudo systemctl stop <unit_name>

где <unit_name> – название юнита.


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

sudo systemctl restart <unit_name>

где <unit_name> – название юнита.

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

Менеджер systemd может автоматически запускать юниты, например, при загрузке ОС или при подключении к компьютеру определённого оборудования.

Для автозапускаемых юнитов в каталоге /etc/systemd/system/ или /etc/systemd/user/ создаётся ссылка на юнит-файл. А при отключении автозапуска юнита этот юнит-файл удаляется. 

В подкаталоге system/ создаются юнит-файлы для юнитов системных программ. В подкаталоге user/ – для юнитов пользовательских программ. 


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

sudo systemctl enable <unit_name>

где <unit_name> – название юнит-файла.


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

sudo systemctl disable <unit_name>

где <unit_name> – название юнита.

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

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

sudo systemctl status <unit_name>

где <unit_name> – название юнита.

$ 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
           ...

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

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

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

Параллельно с journald может работать другая служба журналирования, например, syslog-ng.


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

sudo journalctl


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

sudo journalctl -u <unit_name>

где <unit_name> – название юнита.


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

ОпцияОписание
-n

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

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

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

-f

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

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

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

-r

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


Подробнее о команде просмотра журнала см. справку "man journalctl".

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

Файл или каталогОписание
/etc/systemd/Каталог с файлами настроек *.conf менеджера systemd
/etc/systemd/system/
Каталог с включёнными юнит-файлами системных программ, т.е. находящимися в состоянии enable.
/etc/systemd/user/
Каталог с включёнными юнит-файлами пользовательских программ, т.е. находящимися в состоянии enable.
/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/

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

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