/etc/init.d/ar_sendmail에서 작동하는 시작 스크립트(ar_sendmail이라는 Ruby gem용)를 얻으려고 합니다.
#! /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
start-stop-daemon 줄에서 "start-stop-daemon: notfound"라는 메시지가 나타납니다. 하지만 값을 해당 줄에 수동으로 연결하고 명령줄에서 실행하면 작동합니다.
내 첫 번째 생각은 그것이 shebang 라인이라는 것이었지만 #! /bin/sh
옳았어야 하지 않겠습니까? 그것은 확실히 올바른 폴더이며 다른 /etc/init.d 스크립트에서 사용하는 폴더입니다.
내 두 번째 생각은 그것이 sudo와 관련이 있다는 것입니다. 저는 sudo가 아닌 곳에서 start-stop-daemon을 테스트하고 sudo 모드에서 /etc/init.d/ar_sendmail을 실행했습니다. 하지만 sudo로도 start-stop-daemon을 잘 실행할 수 있습니다.
좀 당황스럽네요. 어떤 아이디어라도 있나요?
답변1
PATH=/var/lib/gems/1.8/bin
문제가 있습니다.
/sbin에서 PATH
찾을 수 없도록 변수를 방해하고 있습니다.start-stop-daemon
다음을 사용해 보세요:
PATH=${PATH}:/var/lib/gems/1.8/bin
아니면 대신 비슷한 것.