[ad_1]
Системд это современный пакет программного обеспечения, который предоставляет множество компонентов на линукс система, включающая системный и сервисный менеджер. Он совместим с SysV и младший бит сценарии инициализации и работает как замена сисвинит.
Служба systemd определяется в юнит-файле (юнит — это представление службы и системных ресурсов, таких как устройства, сокеты, точки монтирования и т. д.). Файлы пользовательских сервисных единиц должны храниться в /etc/системд/система/ каталог и должен иметь .service
расширение. Например, обычай тестовое приложение служба использует /etc/systemd/system/test-app.service юнит файл.
Юнит-файл — это простой текстовый файл в стиле ini, который обычно включает три общих раздела. Первый раздел обычно Единица раздел, который содержит общую информацию об устройстве, не зависящем от типа устройства.
Следующий раздел — это раздел типа устройства, для услуги это Услуга раздел. И последний раздел — Установить раздел, содержащий информацию об установке устройства.
В этом руководстве мы покажем, как создать новый системад сервис и управлять сервисом с помощью команда systemctlв линуксе.
Создание пользовательского файла службы Systemd в Linux
Чтобы запустить приложение, программу или скрипт как службу в systemd, вы можете создать новую службу systemd следующим образом. Начните с создания службы единица файл с именем тест-приложение.сервис (не забудьте заменить тестовое приложение с фактическим названием вашей службы или приложения), в разделе /etc/системд/система/:
# vi /etc/systemd/system/test-app.service
Следующая конфигурация используется для определения службы для запуска Колба приложение, использующее ГуникорнHTTP-сервер Python WSGI для UNIX.
[Unit] Description=Gunicorn daemon for serving test-app After=network.target [Service] User=root Group=root WorkingDirectory=/apps/test-app/ Environment="PATH=/apps/test-app/bin" ExecStart=/apps/test-app/bin/gunicorn --workers 9 -t 0 --bind 127.0.0.1:5001 -m 007 wsgi:app --log-level debug --access-logfile /var/log/gunicorn/test_app_access.log --error-logfile /var/log/gunicorn/test_app_error.log ExecReload=/bin/kill -s HUP $MAINPID RestartSec=5 [Install] WantedBy=multi-user.target
Давайте кратко опишем каждую директиву конфигурации в приведенной выше конфигурации:
- Описание – используется для указания описания услуги.
- После – определяет отношения со второй единицей, сеть.цель. В этом случае тест-приложение.сервис активируется после сеть.цель единица.
- Пользователь — используется для указания пользователя, с чьими разрешениями будет работать служба.
- Группа — используется для указания группы, с разрешениями которой будет работать служба.
- Рабочий каталог – используется для установки рабочего каталога для исполняемых процессов.
- Среда — используется для установки переменных окружения для исполняемых процессов.
- ExecStart — используется для определения команд с их аргументами, которые выполняются при запуске этой службы.
- ExecReload — используется для определения команд, которые необходимо выполнить для запуска перезагрузки конфигурации в службе.
- WantedBy – позволяет создать символическую ссылку в
.wants/
или.requires/
каталог каждого из перечисленных устройств, многопользовательская.цель в этом случае, когда тест-приложение.сервис блок включается с помощью команда включения systemctl.
Вы можете найти все параметры конфигурации сервисного блока, подробно описанные в Конфигурация сервисного блока документация.
Сохраните файл модуля и закройте его. Затем перезагрузите systemd с этим новым файлом сервисного модуля, запустив:
# systemctl daemon-reload command
Не забывайте всегда запускать эту команду после редактирования файла модуля.
Управление службой Systemd в Linux
Чтобы запустить/активировать службу, запустите команду systemctl следующим образом:
# systemctl start test-app.service
Чтобы проверить, запущена служба или нет, введите команду systemctl, как показано ниже.
# systemctl status test-app.service
Чтобы служба запускалась при загрузке системы, используйте systemctl включить команда. Проверить, включена ли служба, можно с помощью systemctl включен команда следующим образом:
# systemctl enable test-app.service # systemctl is-enabled test-app.service
Кроме того, вы также можете включить и запустить службу одновременно, как показано.
# systemctl enable --now test-app.service
Чтобы остановить/деактивировать службу, запустите системная остановка команда следующим образом:
# systemctl stop test-app.service
Чтобы перезапустить службу, запустите перезапуск системы команда следующим образом:
# systemctl restart test-app.service
Вы также можете отключить службу, чтобы предотвратить ее запуск при загрузке системы, используя команду systemctl отключить команда. Проверить, включена ли служба, можно с помощью systemctl включен команда следующим образом:
# systemctl disable test-app.service # systemctl is-disabled test-app.service
Кроме того, вы можете отключить и остановить его одновременно, как показано.
# systemctl disable --now test-app.service
Для получения дополнительной информации об управлении службами systemd и другими ресурсами запустите:
# man systemctl