Правильный способ использования Ubuntu systemctl для управления Systemd

Управление службой или группой служб на современном персональном компьютере с Linux может быть занятием непростым, особенно если вы не уверены в том, что делаете. К счастью для вас, в Ubuntu Systemctl предоставляет вам всё необходимое для управления службами на ПК с Linux.

В этом руководстве вы узнаете, как управлять службами Systemd на ПК с Ubuntu, выполняя различные команды systemctl.

Готовы? Погнали!

Предварительные условия

Это руководство будет практическим демонстрационным материалом и не требует специальных инструментов, важно лишь, чтобы вы использовали Ubuntu версии 16 или выше. В данном руководстве используется версия Ubuntu 20.04.3 LTS для демонстраций.

Что такое Ubuntu Systemctl?

Прежде чем запускать команды Ubuntu systemctl, ознакомьтесь с тем, что такое Systemctl. Systemctl – это утилита командной строки для управления и контроля systemd и системными службами.

В двух словах, Systemctl – это панель управления или менеджер служб для системы инициализации init systemd, предназначенный для инициализации компонентов после загрузки ядра Linux. Systemctl – это набор библиотек, демонов и утилит, которые можно использовать для управления службами.

Чтобы эффективно управлять службами, необходимо знать различные состояния служб, как показано ниже:

  • Включено – указывает на то, что служба настроена на запуск при загрузке системы.
  • Отключено – указывает на то, что служба настроена на запуск при загрузке системы.
  • Активно – указывает на то, что служба в данный момент находится в состоянии выполнения.
  • Неактивно – указывает на то, что служба в данный момент не запущена, но может запуститься, когда какое-либо приложение попытается запустить эту службу.

Перечисление всех служб

Теперь, когда вы знаете различные состояния служб, возможно, вы захотите увидеть список всех служб на вашем компьютере Ubuntu. Перечисление всех служб предоставляет ряд информации, которая подготовит вас к управлению службами.

Откройте терминал и выполните следующую команду, чтобы перечислить все службы (list-units) (активные, запущенные, завершенные или сбойные) с типом единицы службы (--type=service).

systemctl list-units --type=service

Выберите любую службу из списка, которую вы хотите управлять позже в этом руководстве, и запишите имя ЕДИНИЦЫ (например, apache2). Нажмите пробел, чтобы прокрутить вниз, или нажмите клавишу “Q”, чтобы выйти из команды.

Кстати, вот хороший руководство по Сценариям оболочки Linux.

Listing All Services (active, running, exited, or failed)

Перечисление служб с указанным состоянием

Вместо того чтобы перечислять все службы, возможно, вы хотите сузить список услуг. Если это так, добавление параметра --state сделает дело, так как он фильтрует службы с указанным вами состоянием.

Запустите любую из следующих команд, чтобы перечислить все активные службы (--type=service --state=active), как работающие, так и завершенные.

systemctl list-units --type=service --state=active
Listing Services on “active” State

Аналогично, чтобы перечислить только завершенные или работающие службы, измените значение состояния с active на running или exited, как показано в приведенных ниже командах:

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

Перечисление включенных служб

Помимо перечисления активных, работающих и завершенных служб, вы также можете перечислить включенные и отключенные службы, используя команду grep.

Запустите любую из следующих команд для перечисления (list-unit-files) служб disabled или enabled (--type=service).

## Перечисляет все включенные службы
systemctl list-unit-files --type=service | grep enabled
## Перечисляет все отключенные службы
systemctl list-unit-files --type=service | grep disabled

Обратите внимание на включенный сервис, как показано ниже, так как вам понадобится это позже для отключения сервиса, но в этом руководстве используется acpid.service для демонстрации. Acpid – это расширяемый демон, который поддерживает события Advanced Configuration and Power Interface (ACPI).

Listing Enabled Services

Список свойств службы

Помимо перечисления служб, вам может понадобиться проверить свойства службы. Иметь представление о свойствах службы полезно для устранения неполадок, параметров процесса или поведения при перезапуске.

Выполните нижеуказанную команду, чтобы показать свойства службы (acpid.service) в формате ключ=значение.

systemctl show acpid.service
Showing Service Properties

Теперь, если вам нужно только определенное свойство службы, вы можете передать флаг -p с именем свойства.

Выполните нижеуказанную команду, чтобы показать свойство MainPID службы (acpid.service).

systemctl show acpid.service -p MainPID
Showing Specific Service Property

Управление конкретной службой

Поскольку основы перечисления служб уже известны, пришло время управлять конкретной (одиночной) службой, выполнив команды systemctl stop и start.

Apache-сервис (apache2) используется для следующих демонстраций, но вы свободно управляете сервисом, отмеченным в разделе “Listing All Services”. Но прежде чем остановить или запустить сервис, вам сначала необходимо проверить его статус.

Запустите следующую команду в терминале, чтобы просмотреть подробную информацию о службе apache2, такую как ее status.

systemctl status apache2

Ниже вы можете видеть, что служба apache2 активна и работает.

Viewing apache2 Service Status

Для просмотра статуса службы не требуется вводить пароль sudo, так как вы не изменяете состояние службы. Но если вы запускаете, останавливаете или перезапускаете службу, вам нужно предварительно использовать команду sudo и ввести пароль sudo.

Остановка службы

Возможно, вам нужно остановить службу, которая осталась висеть и все еще работает в фоне. В этом случае вам нужна команда systemctl stop. Запустите команду systemctl ниже, чтобы остановить службу apache2.

sudo systemctl stop apache2

Если вы предпочитаете остановить несколько служб одновременно, укажите каждую службу через пробел, например: sudo systemctl stop sshd apache2. В этой команде вы остановите сразу две службы: sshd и apache2.

Теперь выполните команду systemctl status, как вы делали ранее, чтобы убедиться, что служба apache2 остановлена.

systemctl status apache2

Вы видите ниже, что статус службы apache2 изменился на inactive (dead), что указывает на то, что служба остановлена.

Verifying if apache2 Service is Stopped

Запуск службы

Теперь как запустить службу, если вы заметили, что она вообще не запущена? Вы запускаете команду, аналогичную остановке службы, которая называется командой systemctl start. Выполните следующую команду, чтобы start службу apache2.

sudo systemctl start apache2

Как и при остановке нескольких служб, вы также можете запустить несколько служб одной командой. Замените команду stop на команду start таким образом: sudo systemctl start sshd apache2

Теперь выполните команду systemctl status еще раз, чтобы убедиться, что служба apache2 запущена.

systemctl status apache2

Если вы видите статус active (running), как показано ниже, то все готово, так как служба снова работает.

Starting apache2 service

Если вы предпочитаете перезапустить службу сразу, не останавливая ее сначала. Если так, то используйте команду systemctl restart, как это: sudo systemctl restart apache2

Включение или отключение службы

Возможно, есть определенная служба, которую вы предпочли бы либо запускать, либо не запускать при загрузке системы. Если это так, то выполнение команды systemctl enable или disable – лучший подход.

Подкоманда enable позволяет настроить параметры автоматического запуска по умолчанию на вашей системе, в то время как подкоманда disable предотвращает запуск службы при загрузке системы.

Выполните команду systemctl ниже, чтобы отключить службу (acpid.service), отмеченную в разделе “Отображение включенных служб”. Введите свой пароль sudo, чтобы авторизовать выполнение команды.

sudo systemctl disable acpid.service
Disabling a Service

Теперь, поскольку служба acpid.service поддерживает направленную ОС конфигурацию и управление питанием (OSPM), вам нужно снова включить ее. Команда для включения службы аналогична отключению службы.

Выполните команду systemctl ниже, чтобы включить acpid.service. Эта команда регистрирует службу обратно в настройках запуска по умолчанию на вашей системе.

sudo systemctl enable acpid.service
Enabling a Service

Заключение

В этом руководстве вы поняли, насколько быстро можно остановить, запустить или перезапустить службы, выполнив команды Ubuntu systemctl. Вы также узнали, что команда systemctl позволяет управлять не только одной, но и несколькими службами одновременно.

Обладая этим новым знанием, почему бы вам не автоматизировать управление службами в вашей системе Ubuntu?

Source:
https://adamtheautomator.com/ubuntu-systemctl/