Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление
stylenone

Информация
titleДанная статья применима к:
  • 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)

Введение

systemd – системный менеджер, управляющий операционной системой

...

и службами. При загрузке операционной системы первым запускается

...

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

Менеджер systemd:

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

...

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

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

...

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

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

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

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

Command

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

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

Типы юнитов

...

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

Тип юнита

...

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

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

Например,

...

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

device

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

Например,

...

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

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

...

ресурсами, потребляемыми этими юнитами
scope

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

...

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

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

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

Операционная система находится в одном из состояний: выключена,

...

Чтобы менеджер systemd смог управлять юнитом, необходимо включить юнит.

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

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

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

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

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

Command

systemctl get-default

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

Command

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

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

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

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

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

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

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

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

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

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

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

Command

sudo systemctl poweroff

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

Command

sudo systemctl reboot

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

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

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

Command

sudo systemctl rescue

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

Command

sudo systemctl default

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

Command

sudo systemctl is-system-running

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

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

initializing

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

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

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

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

Command

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

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

Command

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

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

Command

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

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

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

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

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

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

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

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

...

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

Command

sudo systemctl enable

...

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

<название_

...

юнита>

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

Command

sudo systemctl disable

...

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

...

<название_юнита>

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

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

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

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

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

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

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

Command

sudo systemctl

...

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

status <название_юнита>

Раскрыть
titleНажмите, чтобы раскрыть пример команды и её вывода...
Блок кода
$ 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) – означает, что юнит активен (служба запущена)

...

  • .

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

Command

sudo systemctl status

...

Раскрыть
titleНажмите, чтобы раскрыть пример команды и её вывода...
Блок кода
$ 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, чтобы вести набор классических текстовых журналов в каталоге /var/log/.

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

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

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

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

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

Command

sudo systemctl poweroff

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

Command

sudo systemctl reboot

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

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

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

Command

sudo systemctl rescue

...

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

Command

sudo

...

journalctl

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

Command

sudo

...

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

...

initializing

...

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

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

Command

sudo systemctl start <unit_name>

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

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

Command

sudo systemctl stop <unit_name>

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

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

Command

sudo systemctl restart <unit_name>

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

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

Command

sudo systemctl status <unit_name>

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

Пример вывода команды "sudo systemctl status sshd":

Блок кода
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 -u <название_юнита>


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

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

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

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

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

-f

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

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

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

-r

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

...

Расположение файлов и каталогов менеджера 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