Найти тему
БЛОГ CYBER01

Как запустить bash скрипт как systemd сервис

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