Источник: https://habr.com/ru/companies/infobox/articles/241237/
Systemd
приносит концепцию юнитов systemd
. Юниты представлены конфигурационными файлами, размещенными в одной из директорий:
/usr/lib/systemd/system/
– юниты из установленных пакетов RPM
.
/run/systemd/system/
— юниты, созданные в рантайме. Этот каталог приоритетнее каталога с установленными юнитами из пакетов.
/etc/systemd/system/
— юниты, созданные и управляемые системным администратором. Этот каталог приоритетнее каталога юнитов, созданных в рантайме.
Юниты содержат информацию о системных сервисах, прослушиваемых сокетах, сохраненных снапшотах состояний системы и других обьектах, относящихся к системе инициализации.
Типы юнитов systemd:
.service – системный сервис
.target — группа юнитов systemd
.automount – точка автомонтирования файловой системы
.device – файл устройства, распознанного ядром
.mount – точка монтирования файловой системы
.path – файл или директория в файловой системе
.scope – процесс, созданный извне
.slice – группа иерархически организованных юнитов, управляющая системными процессами
.snapshot – сохраненное состояние менеджера systemd
.socket – сокет межпроцессного взаимодействия
.swap – Свап-устройство или свап-файл (файл подкачки)
.timer – таймер systemd
D-Bus
. Системные сервисы, использующие D–Bus
для межпроцессного взаимодействия, могут быть запущены по требованию, когда клиентское приложение пытается связаться с ними. Systemd
запускает системные сервисы параллельно из-за использования активации, основанной на сокетах. В комбинации с сервисами, поддерживающими активацию по требованию, параллельная активация значительно уменьшает время загрузки системы. systemd
автоматически пытается исправить ее и удалить не требующиеся задания из нее до формирования сообщения об ошибке.
Обратная совместимость с инициализацией SysV
. SystemD
полностью поддерживает скрипты инициализации SysV
, как описано в спецификации Linux Standard Base (LSB)
, что упрощает переход на systemd
. В предыдущих версиях CentOS
использовалась SysV
или Upstart
. Скрипты инициализации располагались в директории /etc/rc.d/init.d/
. Такие скрипты обычно писались на Bash
и позволяли администратору управлять состоянием сервисов и демонов. В CentOS 7+
скрипты инициализации были заменены сервисными юнитами.
По способу использования сервисные юниты .service
напоминают скрипты инициализации. Для просмотра, старта, остановки, перезагрузки, включения или выключения системных сервисов используется команда systemctl
. Команды service
и chkconfig
по-прежнему включены в систему, но только по соображениям совместимости.
systemctl
:systemctl start name.service
– запуск сервиса
systemctl stop name.service
— остановка сервиса
systemctl restart name.service
— перезапуск сервиса
systemctl try-restart name.service
— перезапуск сервиса только, если он запущен
systemctl reload name.service
— перезагрузка конфигурации сервиса
systemctl status name.service
— проверка, запущен ли сервис с детальным выводом состояния сервиса
systemctl is-active name.service
— проверка, запущен ли сервис с простым ответом: active или inactive
systemctl list-units --type service --all
– отображение статуса всех сервисов
systemctl enable name.service
– активирует сервис (позволяет стартовать во время запуска системы)
systemctl disable name.service
– деактивирует сервис
systemctl reenable name.service
– деактивирует сервис и сразу активирует его
systemctl is–enabled name.service
– проверяет, активирован ли сервис
systemctl list-unit-files --type service
– отображает все сервисы и проверяет, какие из них активированы
systemctl mask name.service
– заменяет файл сервиса симлинком на /dev/null
, делая юнит недоступным для systemd
systemctl unmask name.service
– возвращает файл сервиса, делая юнит доступным для systemd