блоки start-stop-daemon для процесса с бесконечным циклом

У меня есть задача создать службу из сценария bash, чтобы вызвать ее в качестве службы … start / stop / restart.

Сценарий, который должен стать сервисом, представляет собой бесконечный цикл, который просыпается каждую минуту и ​​выполняет некоторую проверку. Я называю это так:

start() { echo -n $"Starting $DESC:" DAEMON_ARGS=$(xmlstarlet sel -T -t -m "/config/input/sensor/device/resource" -v "concat(../../@type, ' ', ../../@dev, ' ', @res)" -n $CONFIGURATION_FILE | extract_devices) # get device names out of XML file echo "daemon args $DAEMON_ARGS" start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS echo} 

pid и daemon определяются следующим образом:

 PIDFILE="/var/run/detection.pid" NAME="jblub_control_loop.sh" DAEMON="/root/test_det/${NAME}" 

Когда я бегу

./detection start (я также попытался скопировать в init.d и запустить с запуском обнаружения службы)

Сценарий инициализации просто не выходит из цикла и остается заблокированным в функции start-stop-daemon. Когда я комментирую бесконечный цикл while внутри моего jblub_control_loop.sh, он проходит, но файл pid не создается.

Мой вопрос заключается в том, как правильно запустить скрипт с бесконечным циклом в качестве службы и почему мой файл pid не создан.

    Для начала,

    используйте переключатель -background, чтобы он был раздвоен. используйте ключ -m для создания PID-файла

    start-stop-daemon --start --background -m --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS

    Для получения полного ответа см. https://stackoverflow.com/questions/16139940/what-is-start-stop-daemon-in-linux-scripting

    наслаждаться