start-stop-daemon funciona na linha de comando, mas não funciona no script /etc/init.d

1

Estou tentando obter um script inicial (para uma joia ruby chamada ar_sendmail) trabalhando em /etc/init.d/ar_sendmail:

#! /bin/sh

echo "in /etc/init.d/ar_sendmail"
DIR=/home/max/work/e_learning_resource/trunk
PATH=/var/lib/gems/1.8/bin
DAEMON=/var/lib/gems/1.8/bin/ar_sendmail
DAEMON_OPTS="-e production -d --batch-size 100 --delay 150"
NAME=ar_sendmail
DESC=ar_sendmail
PID_FILE=/home/max/work/e_learning_resource/trunk/shared/log/ar_sendmail.pid


test -x $DAEMON || exit 0
set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon -d $DIR --start --quiet --pidfile $PID_FILE \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        kill -TERM 'cat $PID_FILE'        
    rm $PID_FILE
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        kill -TERM 'cat $PID_FILE'        
    rm $PID_FILE
        sleep 1
        start-stop-daemon -d $DIR --start --quiet --pidfile \
                $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|reload}" >&2
            exit 1   
            ;;
    esac

    exit 0

Ele está explodindo na linha start-stop-daemon, dizendo "start-stop-daemon: not found". Mas, quando eu conecto os valores manualmente nessa linha, e o executo na linha de comando, ele funciona.

Meu primeiro pensamento foi que era a linha shebang, mas #! /bin/sh deveria estar certo, não deveria? É definitivamente a pasta certa e o que eu uso em meus outros scripts /etc/init.d.

Meu segundo pensamento foi que ele é relacionado ao sudo: eu estava testando o start-stop-daemon no não-sudo e executando o /etc/init.d/ar_sendmail no modo sudo. Mas, eu posso rodar o start-stop-daemon bem com o sudo também.

Tipo de perplexidade, alguma ideia?

    
por Max Williams 08.03.2011 / 12:20

1 resposta

5
PATH=/var/lib/gems/1.8/bin

Existe o seu problema.

Você está destruindo sua variável PATH , por isso não é possível encontrar start-stop-daemon em / sbin

Tente usar:

PATH=${PATH}:/var/lib/gems/1.8/bin

Ou algo parecido.

    
por 08.03.2011 / 12:31