-
Adicione
PATH
ao seu script e inclua/sbin
. Como o scriptinit
não compartilha a variável de ambientePATH
com o resto do sistema, você precisa defini-lo diretamente no seu script e certificar-se de que/sbin
esteja lá, por exemplo, add:PATH=/sbin:/bin:/usr/sbin:/usr/bin
No início do seu script.
-
Depure seu script para ter certeza de que o start-stop-daemon está lendo o caminho do monit corretamente a partir da variável
DAEMON
. Para fazer isso, adicione a seguinte linha no começo do seu script:set -x #echo on
A coisa toda pareceria
#!/bin/sh set -x #echo on ### BEGIN INIT INFO # Provides: monit # Required-Start: $remote_fs # Required-Stop: $remote_fs # Should-Start: $all # Should-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: service and resource monitoring daemon # Description: monit is a utility for managing and monitoring # processes, programs, files, directories and filesystems # on a Unix system. Monit conducts automatic maintenance # and repair and can execute meaningful causal actions # in error situations. ### END INIT INFO set -e PATH=/sbin:/rest of your path here.
Seu script.
Se
DAEMON
estiver corrompido, de alguma forma, tente cercá-lo com parênteses:if start-stop-daemon --start --quiet --oknodo \ --pidfile $PID --exec $($DAEMON) \ -- $MONIT_OPTS
Ou simplesmente adicione o caminho ao binário diretamente.
if start-stop-daemon --start --quiet --oknodo \ --pidfile $PID --exec /usr/bin/monit \ -- $MONIT_OPTS
-
Se a última opção não funcionar, verifique se o binário está realmente lá. Se for, então você terá que verificar se o daemon start-stop é realmente permitido para acessá-lo. Olhe para o chrooting.