start-stop-daemonは私のPythonスクリプトをサービスとして起動しません。

start-stop-daemonは私のPythonスクリプトをサービスとして起動しません。

私の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.pyprog=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

おすすめ記事