Start-Stop-Daemon funktioniert in der Befehlszeile, aber nicht im Skript /etc/init.d

Start-Stop-Daemon funktioniert in der Befehlszeile, aber nicht im Skript /etc/init.d

Ich versuche, ein Starterskript (für ein Ruby-Gem namens ar_sendmail) in /etc/init.d/ar_sendmail zum Laufen zu bringen:

#! /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

Es stürzt in der Start-Stop-Daemon-Zeile ab und sagt „Start-Stop-Daemon: nicht gefunden“. Aber wenn ich die Werte manuell in diese Zeile eingebe und es auf der Befehlszeile ausführe, funktioniert es.

Mein erster Gedanke war, dass es die Shebang-Zeile war, aber #! /bin/shes müsste doch richtig sein, oder? Es ist definitiv der richtige Ordner und der, den ich in meinen anderen /etc/init.d-Skripten verwende.

Mein zweiter Gedanke war, dass es mit Sudo zusammenhängt: Ich habe Start-Stop-Daemon in einem Nicht-Sudo-Modus getestet und /etc/init.d/ar_sendmail im Sudo-Modus ausgeführt. Aber ich kann Start-Stop-Daemon auch mit Sudo problemlos ausführen.

Ich bin ein bisschen ratlos, irgendwelche Ideen?

Antwort1

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

Da ist Ihr Problem.

Sie überschreiben Ihre Variable, sodass sie in /sbin PATHnicht gefunden werden kannstart-stop-daemon

Versuchen Sie es mit:

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

Oder stattdessen etwas Ähnliches.

verwandte Informationen