В последнее время все больше дистрибутивов Linux переходит с других систем инициализации на systemd. Этот набор инструментов представляет быструю и гибкую модель инициализации для управления сервером с момента загрузки.
Базовый объект, с которым работает systemd, называется “юнитом” (unit). Есть много видов юнитов, но самым распространенным является служба (service, файл юнита заканчивается на .service). Основным инструментом для управления службами на сервере является команда systemctl.
Для запуска службы нужно ввести:
systemctl start smb.service
Остановка осуществляется следующей командой:
systemctl stop smb.service
Перезапуск службы:
systemctl restart smb.service
Чтобы повторно загрузить файлы конфигурации службы, не прерывая ее работы, нужно выполнить команду:
systemctl reload smb.service
Для включения автоматического запуска при загрузке введите:
systemctl enable smb.service
Если нужно снова отключить службу:
systemctl disable smb.service
Чтобы получить список юнитов, которые systemd считает активными, нужно выполнить следующую команду.
systemctl list-units
Для вывода списка юнитов, которые systemd загружал или пытался загрузить в память, в том числе не активные в данный момент, нужно указать опцию —all:
systemctl list-units —all
Чтобы вывести все установленные в системе юниты, в том числе те, которые systemd не пытался загрузить в память, выполните команду:
systemctl list-unit-files
Для просмотра состояния самого юнита можно воспользоваться опцией status команды systemctl. Вы увидите, активен ли юнит, получите информацию о процессе и последние записи журнала:
systemctl status smb.service
Для просмотра полного содержимого файла юнита нужно выполнить команду:
systemctl cat smb.service
Для просмотра дерева зависимостей юнита (другие юниты, активируемые systemd при запуске юнита), выполните команду:
systemctl list-dependencies smb.service
Вывод списка зависимых юнитов, которые будут рекурсивно раскрыты. Для полного рекурсивного раскрытия всех зависимых юнитов, воспользуйтесь опцией —all:
systemctl list-dependencies --all smb.service
Для просмотра низкоуровневых данных о настройках юнита в системе используется опция show. В этом случае выводится значение каждого параметра, управляемого systemd:
systemctl show smb.service
Для создания сниппета файла юнита (блок, который может использоваться для дополнения или замены параметров файла юнита по умолчанию) нужно воспользоваться опцией edit:
systemctl edit smb.service
Если нужно изменить все содержимое файла, а не создавать сниппет, воспользуйтесь флагом —full:
systemctl edit --full smb.service
После изменения файла юнита нужно перезагрузить сам процесс systemd для принятия изменений:
systemctl daemon-reload
Создание цели. Цель — это точка синхронизации, которой сервер может воспользоваться для перехода в определенное состояние. К цели можно привязать службы и другие юниты, одновременно может быть активно несколько целей. Для просмотра полного списка целей в системе нужно выполнить команду:
systemctl list-units --type=target
Для просмотра цели по умолчанию, которой systemd стремится достичь при загрузке (которая, в свою очередь, запускает все файлы юнитов, составляющие дерево зависимости этой цели), выполните команду:
systemctl get-default
Для просмотра привязанных к цели юнитов можно выполнить следующую команду:
systemctl list-dependencies multi-user.target
Изменять состояние системы для перехода между можно при помощи isolate (изолировать). Она останавливает все юниты, не привязанные к указанной цели. Убедитесь что изолируемая вами цель не останавливает важные службы.
systemctl isolate reboot.target