[[A8R.ru]]
...
Шпаргалка по работе с systemd

systemd: руководство по использованию

20.09.2024
Linux

Systemd — это система инициализации и управления службами в Linux, которая пришла на смену традиционным init системам.


Основные понятия

Юнит (unit) — это описание службы или процесса в системе. Юниты могут быть разных типов: сервисные юниты (для запуска служб), цели (для группировки юнитов), сокеты и т.д.

Сервис (service) — это процесс, который запускается и управляется systemd. Сервисы могут быть запущены автоматически при старте системы или по запросу пользователя.

Цель (target) — это группа юнитов, которые должны быть запущены одновременно. Цели могут использоваться для управления группами сервисов.

Сокет (socket) — это объект, который используется для связи между сервисами. Сокеты могут быть созданы и управляемы systemd.


Управление юнитами

Запуск и остановка юнитов

Для запуска юнита используйте команду

systemctl start <имя_юнита>

Для остановки юнита используйте команду

 systemctl stop <имя_юнита>

Чтобы проверить состояние юнита, используйте команду

 systemctl status <имя_юнита>

Автозапуск юнитов

Чтобы автозапустить юнит при старте системы, используйте команду 

systemctl enable <имя_юнита>

Чтобы отключить автозапуск юнита, используйте команду 

systemctl disable <имя_юнита>

Перезагрузка конфигурации юнита

Чтобы перезагрузить конфигурацию юнита без его перезапуска, используйте команду 

systemctl daemon-reload

Список всех юнитов:

выводит список всех запущенных юнитов.

systemctl list-units

Список всех юнитов, включая неактивные: выводит список всех юнитов, независимо от их состояния

systemctl list-units --all

Вывод списка таймеров:

выводит список всех активных таймеров.

systemctl list-timers

Настройка юнитов

Файлы конфигурации

Файлы конфигурации юнитов находятся в следующих каталогах:

/etc/systemd/system - сюда помещаются юниты, созданные администратором системы вручную.

Системные

/usr/lib/systemd/system - здесь находятся юниты, установленные вместе с системой через менеджер пакетов. Примеры таких юнитов включают веб-серверы Apache или Nginx.

/run/systemd/system - в этом каталоге создаются юниты во время работы системы.

Файлы конфигурации имеют расширение .service.

В файлах конфигурации можно указать параметры запуска, остановки и управления юнитом.


Параметры конфигурации

Unit:

Описание (Description): Краткое описание того, что делает сервис.

После (After): Указывает зависимости от других сервисов. Например, After=network.target гарантирует, что сервис будет запущен после того, как сеть станет доступна.

Service:

Пользователь (User) и Группа (Group): Определяют, под каким пользователем и группой должен работать сервис.

WorkingDirectory: Устанавливает рабочий каталог для сервиса.

Environment: Позволяет задать переменные окружения для сервиса.

ExecStart: Команда, которая будет запущена при старте сервиса. В данном случае это запуск Gunicorn с необходимыми параметрами.

ExecReload: Команда для перезагрузки сервиса.

RestartSec: Время ожидания перед попыткой перезапустить сервис после сбоя.

Install:

WantedBy: Указывает цель, к которой должен быть привязан сервис.


Примеры использования

Запуск веб-сервера

Создайте файл конфигурации /etc/systemd/system/myapp.service со следующим содержимым:

[Unit]
Description=Service Name
After=network.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/bin/myapp
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Запустите и автозапустите сервис:

systemctl start nginx

systemctl enable nginx