Иногда требуется запустить произвольный скрипт и держать его запущенным постоянно. Раньше для этого часто использовали Supervisor, но в современных ОС есть встроенное средство (а точнее сервисы это часть довольно большого комплекса) - systemd.
В это статье я расскажу, как запустить произвольный bash скрипт в качестве systemd сервиса
Создание bash скрипта
Создадим с помощью любого текстового редактора простой bash скрипт, я буду использовать vi:
vi /usr/bin/script.sh
В качестве содержимого возьмем бесконечный цикл:
#!/bin/bash
while true
do
// Как-то действия
sleep 10
done
Сохраним его и дадим права на запуск:
chmod +x /usr/bin/script.sh
Создание systemd сервиса
systemd сервисы должны иметь расширение .service и должны быть расположены в /lib/systemd/system/
Создадим сервис с именем testservice.service:
vi /lib/systemd/system/testservice.service
В качестве содержимого укажем:
[Unit]
Description=Test Script
[Service]
ExecStart=/usr/bin/script.sh
[Install]
WantedBy=multi-user.target
Запуск сервиса и добавление в автозагрузку
Т.к. мы добавили новый сервис, то нужно перестроить список сервисов:
systemctl daemon-reload
Для запуска сервиса используется команда опция start, а для добавления в автозагрузку - enable:
systemctl enable testservice.service
systemctl start testservice.service
Либо вы можете добавить сервис в автозагрузку и сразу запустить его командой:
systemctl enable testservice.service --now
Теперь проверим статус сервиса:
systemctl status testservice.service
Сервис будет запущен и успешно работать.
Статья написана для моего блога: https://cyber01.ru/kak-zapustit-bash-skript-kak-systemd-servis/