私のDebianコンピュータでGoogle AppEngineを実行しようとしていますが、次のファイルを作成しましたinit.d/gae
。
. /lib/lsb/init-functions
#
# Initialize variables
#
name=gae
user=$name
pid=/var/run/$name.pid
prog="python /opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www"
case "${1}" in
start)
echo "Starting...Google App Engine"
start-stop-daemon --start --make-pidfile --background --oknodo --user "$user" --name "$name" --pidfile "$pid" --startas "$prog"
;;
stop)
echo "Stopping...Google App Engine"
;;
restart)
${0} stop
sleep 1
${0} start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac
exit 0
# End scriptname
スクリプトを手動で呼び出してテストしていますが、スクリプトは実行されますが、デーモンとして実行されないか、少なくとも端末から切り離されません。私はApacheに似た機能を期待または探しています。
私にはどのスイッチがありませんか?
編集する
スイッチがPIDファイルを生成する必要があるとマークしても、ファイルが作成または生成されないことに注意してください。
答え1
2つの質問があるようです。
prog=python /opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www
/opt/google_appengine/dev_appserver.py
prog=python
環境から始めます。これはstart
ブロックの前であるため、start-stop-daemon
関連していません。
クイック修正は、次のように全体の操作を参照することです。
prog='python /opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www'
しかし、より良い解決策はスタイルを使用して/etc/init.d/skeleton
実行することです。
DAEMON='python /opt/google/appengine/dev_appserver.py'
DAEMON_ARGS='--host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www'
2番目の問題は、引用が間違っていることです$prog
。
start-stop-daemon --start --make-pidfile --Background --oknodo --user "$user" --name "$name" --pidfile "$pid" --startas "$prog"
start-stop-daemon
というプログラムを開始するように指示しますpython /opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www
。
しかし、そのような手順はないようです。python
議論から始めたいです。二重引用符を削除するのは簡単な修正ですが、より良い方法/etc/init.d/skeleton
は次のとおりです。
起動 - デーモンプロセスの停止 --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS
答え2
私は生涯の間にstart-stop-daemonが機能しない理由を知りません。私はDebian 7.6をwheezyとして実行しており、この機能が無効になっていると仮定できます。
/dev/null および & および voila を使用するように変更しました。 sciptが起動し、期待どおりに実行され続けました... mysqlからコードを盗みました。
$prog > /dev/null 2>&1 &
誰かがこのアプローチがうまくいき、元のソリューションがうまくいかなかった理由を説明できればとても興味深いでしょう...とにかく、私は私の経験を共有したいと思いました。
- 他の人が解決策を見つけるのに苦労しないようにしてください。
- 誰かが出てきて、私が元々考えたように機能する方法を説明するように頼みます。 :)
編集|今興味のある2行は次のとおりです。
prog='/usr/bin/python /opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www'
start-stop-daemon --start --make-pidfile --background --oknodo --user $user --name $name --pidfile $pid --exec $prog