Как управлять сервисами Systemd с помощью Systemctl?
Системный и сервисный менеджер по умолчанию для большинства дистрибутивов Linux сейчас systemd
.
Процесс systemd заменяет SysV init. Он запускается как первый процесс после загрузки ядра и отвечает за приведение хоста Linux в состояние, в котором он может использоваться. Он отвечает за запуск и управление службами, монтирование файловых систем, управление оборудованием, генерацию приглашения на вход в систему и многое другое.
Ключевое преимущество по сравнению с SysV заключается в том, что systemd запускает как можно больше сервисов параллельно, что ускоряет процесс запуска и ускоряет отображение экрана входа в систему.
Units (Юниты)
Элементы, которыми управляет systemd, называются units (юнитами). Файлы модуля находятся в /lib/systemd/system.
Service Units (Сервисные юниты)
Для сервисного управления применяются сервисные юнити, которые имеют файлы юнитов с суффиксом .service.
Управление сервисами systemd
Команда для управления юнитами systemd является systemctl.
Запуск и остановка сервисов
Чтобы запустить службу systemd, используйте команду запуска systemctl:
sudo systemctl start name.service
Вы также можете оставить суффикс .service.
Например, чтобы запустить сервер Apache в Ubuntu:
sudo systemctl start apache2
Чтобы остановить работающий сервис:
sudo systemctl stop name.service
Итак, чтобы остановить сервер apache в Ubuntu:
sudo systemctl stop apache2
Услуги перезапуска и перезагрузки
Чтобы перезапустить работающую службу, используйте команду restart:
sudo systemctl restart name.service
И где требуется только перезагрузка файла конфигурации:
sudo systemctl reload name.service
Включение и отключение сервисов
Если вы хотите, чтобы служба автоматически запускалась при загрузке системы, используйте команду enable:
sudo systemctl enable name.service
Чтобы отключить запуск службы при загрузке системы:
sudo systemctl disable name.service
Параметр disable не останавливает работающий сервис.
Просмотр статуса сервиса
Чтобы просмотреть информацию о сервисе:
sudo systemctl status name.service
Команда покажет вам статус службы и первые несколько строк файла журнала. Итак, пока служба работает, выводом команды:
sudo systemctl status apache2
Будет:
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2020-05-19 22:11:36 UTC; 4 days ago
Process: 116002 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
Main PID: 104165 (apache2)
Tasks: 55 (limit: 1024)
CGroup: /system.slice/apache2.service
├─104165 /usr/sbin/apache2 -k start
├─116006 /usr/sbin/apache2 -k start
└─116007 /usr/sbin/apache2 -k start
May 19 22:11:36 ubuntu18 systemd[1]: Starting The Apache HTTP Server...
May 19 22:11:36 ubuntu18 systemd[1]: Started The Apache HTTP Server.
May 21 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.
May 21 06:25:01 ubuntu18 systemd[1]: Reloaded The Apache HTTP Server.
May 22 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.
Чтобы проверить, активен ли сервис:
sudo systemctl is-active name.service
Таким образом, пока запущена служба apache2, вывод команды systemctl is-active:
sudo systemctl is-active apache2
active
Чтобы проверить, включен ли сервис:
sudo systemctl is-enabled name.service
Просмотр состояния системы
Все команды, которые вы видели до сих пор, используются для управления одним сервисом. Если вы хотите получить обзор состояния системы, используйте следующий набор команд:
Чтобы увидеть все типы юнитов:
sudo systemctl -t help
Available unit types:
service
socket
target
device
mount
automount
swap
timer
path
slice
scope
Чтобы вывести список всех установленных модулей, используйте list-unit-files
sudo systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
-.mount generated
boot-efi.mount generated
dev-hugepages.mount static
dev-mqueue.mount static
mnt.mount generated
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
acpid.path enabled
apport-autoreport.path enabled
systemd-ask-password-console.path static
systemd-ask-password-plymouth.path static
systemd-ask-password-wall.path static
session-161.scope transient
accounts-daemon.service enabled
Вывод имеет только два столбца Unit File и State. Состояние обычно будет таким: enabled, disabled, static или masked.
- Static (cтатический): это означает, что модуль не может быть включен, выполняет одноразовое действие или является зависимостью другого модуля и не может быть запущен сам по себе.
- Masked (маскированный): юнит, указанный как замаскированный, означает, что он запускается не полностью, так как связан с директорией /dev/null. Это называется маскировкой устройства. Он предотвращает запуск службы вручную или автоматически.
Список всех установленных сервисов
Команда systemctl list-unit-files с параметром -t или -type показывает только состояние установленных служб.
sudo systemctl list-unit-files -t service
UNIT FILE STATE
accounts-daemon.service enabled
acpid.service disabled
apache-htcacheclean.service disabled
apache-htcacheclean@.service disabled
apache2.service enabled
apache2@.service disabled
apparmor.service enabled
apport-autoreport.service static
apport-forward@.service static
apport.service generated
apt-daily-upgrade.service static
apt-daily.service static
atd.service enabled
autovt@.service enabled
blk-availability.service enabled
bootlogd.service masked
bootlogs.service masked
Чтобы увидеть все активные сервисные юниты, используйте list-unit с параметром -t
sudo systemctl list-units -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
apache2.service loaded active running The Apache HTTP Server
apparmor.service loaded active exited AppArmor initialization
apport.service loaded active exited LSB: automatic crash report generation
atd.service loaded active running Deferred execution scheduler
blk-availability.service loaded active exited Availability of block devices
cloud-config.service loaded active exited Apply the settings specified in cloud-con
cloud-final.service loaded active exited Execute cloud user/final scripts
cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking)
cloud-init.service loaded active exited Initial cloud-init job (metadata service
console-setup.service loaded active exited Set console font and keymap
cron.service loaded active running Regular background program processing dae
Вывод имеет следующие столбцы:
- UNIT: имя единицы обслуживания systemd
- LOAD: показывает, правильно ли было прочитано и загружено определение объекта.
- ACTIVE: описывает, если устройство активно.
- SUB: Низкоуровневое состояние активации устройства, дающее более подробную информацию об устройстве. Это зависит от типа устройства.
- DESCRIPTION: описание сервисного подразделения.
Также рекомендуем прочитать: