Введение

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

Менеджер systemd:

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

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

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

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

Типы юнитов

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

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

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

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

device

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

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

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

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

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

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

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

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

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/. При отключении автозапуска юнита ссылка удаляется. 


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

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

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

-f

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

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

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

-r

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


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

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

Файл или каталогОписание
/etc/systemd/Каталог с файлами настроек *.conf менеджера systemd
/etc/systemd/system/
Каталог с автозапускаемыми системными юнит-файлами
/etc/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/

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

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