Site icon Блог 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 

Сервис будет запущен и успешно работать.

На этом всё 🙂

Exit mobile version