start-stop-daemon работает в командной строке, но не работает в скрипте /etc/init.d

8977
Max Williams

Я пытаюсь получить стартовый скрипт (для рубинового гема ar_sendmail), работающий в /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 " >&2 exit 1  ;; esac  exit 0 

Он взрывается в строке start-stop-daemon, говоря «start-stop-daemon: not found». Но когда я вставляю значения в эту строку вручную и запускаю ее в командной строке, это работает.

Моя первая мысль была, что это была линия Шебанга, но #! /bin/shдолжна быть права, не так ли? Это определенно правильная папка и то, что я использую в других моих /etc/init.d скриптах.

Вторая мысль заключалась в том, что это связано с sudo: я тестировал start-stop-daemon в non-sudo и запускал /etc/init.d/ar_sendmail в режиме sudo. Но я также могу запустить start-stop-daemon нормально с sudo.

Вид тупика, есть идеи?

1
Пожалуйста, не [кросс-пост] (http://stackoverflow.com/questions/5231036/start-stop-daemon-works-at-command-line-but-doesnt-work-in-etc-init-d- скрипт). Dennis Williamson 13 лет назад 1

1 ответ на вопрос

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

Там твоя проблема.

Вы забили свою PATHпеременную, чтобы она не могла найти start-stop-daemonв / sbin

Попробуйте использовать:

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

Или что-то подобное вместо этого.

ааа! конечно. Спасибо, Мэтт. Max Williams 13 лет назад 0
@Daramarak пренебрежение с моей стороны. Отмечено сейчас, спасибо за прод. Max Williams 9 лет назад 0