
Шпаргалка по работе с systemd
systemd: руководство по использованию
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