Управление службой или группой служб на современном персональном компьютере с 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
).
Выберите любую службу из списка, которую вы хотите управлять позже в этом руководстве, и запишите имя ЕДИНИЦЫ (например, apache2). Нажмите пробел, чтобы прокрутить вниз, или нажмите клавишу “Q”, чтобы выйти из команды.
Кстати, вот хороший руководство по Сценариям оболочки Linux.

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

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


Перечисление включенных служб
Помимо перечисления активных, работающих и завершенных служб, вы также можете перечислить включенные и отключенные службы, используя команду grep
.
Запустите любую из следующих команд для перечисления (list-unit-files
) служб disabled
или enabled
(--type=service
).
Обратите внимание на включенный сервис, как показано ниже, так как вам понадобится это позже для отключения сервиса, но в этом руководстве используется acpid.service для демонстрации. Acpid – это расширяемый демон, который поддерживает события Advanced Configuration and Power Interface (ACPI).

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

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

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

Для просмотра статуса службы не требуется вводить пароль sudo, так как вы не изменяете состояние службы. Но если вы запускаете, останавливаете или перезапускаете службу, вам нужно предварительно использовать команду sudo и ввести пароль sudo.
Остановка службы
Возможно, вам нужно остановить службу, которая осталась висеть и все еще работает в фоне. В этом случае вам нужна команда systemctl stop
. Запустите команду systemctl
ниже, чтобы остановить службу apache2
.
Если вы предпочитаете остановить несколько служб одновременно, укажите каждую службу через пробел, например:
sudo systemctl stop sshd apache2
. В этой команде вы остановите сразу две службы: sshd и apache2.
Теперь выполните команду systemctl status
, как вы делали ранее, чтобы убедиться, что служба apache2 остановлена.
Вы видите ниже, что статус службы apache2 изменился на inactive (dead), что указывает на то, что служба остановлена.

Запуск службы
Теперь как запустить службу, если вы заметили, что она вообще не запущена? Вы запускаете команду, аналогичную остановке службы, которая называется командой systemctl start
. Выполните следующую команду, чтобы start
службу apache2
.
Как и при остановке нескольких служб, вы также можете запустить несколько служб одной командой. Замените команду
stop
на командуstart
таким образом:sudo systemctl start sshd apache2
Теперь выполните команду systemctl status
еще раз, чтобы убедиться, что служба apache2
запущена.
Если вы видите статус active (running), как показано ниже, то все готово, так как служба снова работает.

Если вы предпочитаете перезапустить службу сразу, не останавливая ее сначала. Если так, то используйте команду
systemctl restart
, как это:sudo systemctl restart apache2
Включение или отключение службы
Возможно, есть определенная служба, которую вы предпочли бы либо запускать, либо не запускать при загрузке системы. Если это так, то выполнение команды systemctl
enable
или disable
– лучший подход.
Подкоманда enable
позволяет настроить параметры автоматического запуска по умолчанию на вашей системе, в то время как подкоманда disable
предотвращает запуск службы при загрузке системы.
Выполните команду systemctl
ниже, чтобы отключить
службу (acpid.service
), отмеченную в разделе “Отображение включенных служб”. Введите свой пароль sudo, чтобы авторизовать выполнение команды.

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

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