Иногда требуется запустить произвольный скрипт и держать его запущенным постоянно. Раньше для этого часто использовали 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
Сервис будет запущен и успешно работать.
На этом всё 🙂