2011-03-08 14 views
1

/etc/init.dで動作するスタータースクリプト(ar_sendmailというルビーの宝石用)を取得しようとしています。/ar_sendmail:start-stop-daemonはコマンドラインで動作しますが、/etc/init.dスクリプトでは機能しません。

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

それは「:見つからないスタート・ストップ・デーモン」と言って、スタート・ストップ・デーモンラインで吹いています。しかし、私は手動でその行に値をプラグインし、コマンドラインで実行すると、それは動作します。

私が最初に考えたのはシバンラインでしたが、#! /bin/shは正しいはずですか?それは間違いなく正しいフォルダで、私が他の/etc/init.dスクリプトで使っているものです。

私の2度目の考えは、sudo関連です。私はsudo以外でstart-stop-daemonをテストし、sudoモードで/etc/init.d/ar_sendmailを実行していました。しかし、私はsudoでstart-stop-daemonを実行することもできます。

どのようなアイデアですか?

+1

PATH変数を上書きして、/ sbin、/ usr/sbinなどへのアクセスを停止している行を確認してください。PATH = $ PATH:/ blah/blah、または必要なディレクトリを明示的に追加してください。 – vhallac

+0

@Dysaster、それは答えになるはずです... – sarnold

+0

@sarnold真実、なぜ私がコメントを使用したのかわかりません。 :) – vhallac

答えて

0

source /etc/profileをスクリプトの先頭に追加して、パス設定を取得します。

2

@Dysasterが指摘するように、あなたはこの行を使用してPATHを上書きしている:あなたはデーモンの完全なパス名を与えているので

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

、私はあなたがおそらくないと思いますたとえar_sendmailがパスを知らずにそのディレクトリ内のプログラムを実行する必要がなければ、あなたのパスに/var/lib/gems/1.8/binを追加する必要があります。 PATH=/var/lib/gems/1.8/bin:$PATH

関連する問題