start-stop-daemon funciona en la línea de comando pero no funciona en el script /etc/init.d

start-stop-daemon funciona en la línea de comando pero no funciona en el script /etc/init.d

Estoy intentando que un script de inicio (para una gema Ruby llamada ar_sendmail) funcione en /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

Está explotando en la línea start-stop-daemon y dice "start-stop-daemon: no encontrado". Pero, cuando ingreso los valores en esa línea manualmente y lo ejecuto en la línea de comando, funciona.

Lo primero que pensé fue que era la línea shebang, pero #! /bin/shdebería ser correcto, ¿no? Definitivamente es la carpeta correcta y la que uso en mis otros scripts /etc/init.d.

Lo segundo que pensé fue que está relacionado con sudo: había estado probando start-stop-daemon en modo no sudo y ejecutando /etc/init.d/ar_sendmail en modo sudo. Pero también puedo ejecutar start-stop-daemon bien con sudo.

Un poco perplejo, ¿alguna idea?

Respuesta1

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

Ahí está tu problema.

Estás golpeando tu PATHvariable para que no pueda encontrarla start-stop-daemonen /sbin

Intenta usar:

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

O algo similar en su lugar.

información relacionada