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