简体   繁体   中英

Can not start a script in monit

I have a script which have to run another script in background:

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

Firstly it changes directory and runs a script. run-pipe.sh creates named pipes in its directory. And I have a monit config file to monitor this script and to restart it if it's not running:

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"

First line checks the script is running writing to its pipe, it works. The line "start program" doesn't work - the script doesn't run and it's abscent in the "ps ax". But I see in "sudo monit -vI":

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

So, why monit cant run the script? I tried different variants, but cant run it. I can run it without changing directory (cd), but this is nessecary.

Actually monit could not run a script in background because where wasn't output. After adding output file it started to work.

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

Or otherwise /dev/null as output stream.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM