Что нужно для автозапуска службы через systemd?
Если юнит-файлы не содержат секции [Install]
, то они не могут быть включены для автоматического старта с помощью systemctl enable
. Это может происходить с временными или служебными юнитами, которые не предназначены для постоянного запуска через systemd.
Возможные варианты решения:
- Создать юнит-файл с секцией
[Install]
: Если требуется, чтобы служба запускалась при загрузке системы, добавьте секцию[Install]
в юнит-файл:
123[Install]WantedBy=multi-user.targetmulti-user.target
, что позволит системе запускать службу при старте. - Ручной запуск после перезагрузки: Если служба не должна автоматически запускаться, можно настроить её запуск вручную с помощью:
12systemctl start <имя_службы> - Использование стороннего скрипта для старта службы при загрузке: В случае, если редактировать юнит-файл нежелательно или невозможно, вы можете создать скрипт в
/etc/rc.local
или в директории автозагрузки, который будет запускать службу при перезагрузке:
123#!/bin/bashsystemctl start <имя_службы> - Таймер systemd: Если нужно запускать службу через определённые интервалы или по расписанию, можно использовать таймеры systemd. Для этого создайте юнит-файл для таймера, который будет активировать службу по расписанию.Например:
12345678910[Unit]Description=Запуск службы по таймеру[Timer]OnBootSec=10minOnUnitActiveSec=24h[Install]WantedBy=timers.targetПосле создания таймера, активируйте его:
12systemctl enable <имя_таймера>
Таким образом, можно настроить автоматический запуск даже для тех служб, у которых нет секции [Install]
.
Recommended Posts
jq — инструмент для обработки JSON-данных
28.02.2024
Ansible, как перезапустить службу systemd?
10.03.2023