Не могу запустить скрипт в моните - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть скрипт, который должен запускать другой скрипт в фоновом режиме:

#!/bin/bash
( cd /var/lib/docker/volumes/hostcontrol-pipe/_data/ && ./run-pipe.sh ) &

Сначала он меняет каталог и запускает скрипт. run-pipe. sh создает именованные каналы в своем каталоге. И у меня есть файл конфигурации monit для мониторинга этого скрипта и его перезапуска, если он не запущен:

check program check-pipe with path /bin/bash -c "echo 'ping' > /var/lib/docker/volumes/hostcontrol-pipe/_data/host-pipe" with timeout 1 seconds
    if status != 0 then
        restart
    start program = "/var/lib/docker/volumes/hostcontrol-pipe/_data/monit.sh"

Первая строка проверяет, что скрипт выполняет запись в свой канал, он работает. Строка «Запустить программу» не работает - скрипт не запускается и в «ps ax» отсутствует. Но я вижу в "sudo monit -vI":

'check-pipe' start: '/var/lib/docker/volumes/hostcontrol-pipe/_data/monit.sh'
'check-pipe' started
'check-pipe' program started

Итак, почему monit не может запустить скрипт? Я пробовал разные варианты, но не могу запустить его. Я могу запустить его, не меняя каталог (cd), но это не обязательно.

1 Ответ

0 голосов
/ 04 апреля 2020

На самом деле monit не может запустить скрипт в фоновом режиме, потому что не было выведено. После добавления выходного файла он начал работать.

start program = "/bin/bash -c 'cd /var/lib/docker/volumes/hostcontrol-pipe/_data && ./run-pipe.sh > 1.log &'"

Или иначе / dev / null как выходной поток.

...