7

生成されたnginx python fastcgiスクリプト用のデーモンを作成するためにupstartを使用しています。以下を使用すると動作します:

sudo start myserver

機能しないのは次のとおりです。

sudo stop myserver
stop: Unknown instance:

以下は、プロセスを停止するためのコマンドを含む私のconfファイルです。hteプロセスを強制終了するためのコマンドが停止前スクリプトにあると仮定していますか?

#!upstart
description "myserver"
author      "Test"

start on startup
stop on shutdown
respawn
#instance

script
    export HOME="/root"

    echo $$ > /var/run/myerver.pid
    exec spawn-fcgi -d /home/ubuntu/workspace/rtbopsConfig/myserver/ -f /home/ubuntu/workspace/rtbopsConfig/myserver/index.py -a 127.0.0.1 -p 9001 >> /var/log/myserver.sys.log 2>&1
end script

pre-start script
    # Date format same as (new Date()).toISOString() for consistency
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/myserver.sys.log
end script

pre-stop script
    rm /var/run/myserver.pid
    sudo kill `sudo lsof -t -i:9001`
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/myserver.sys.log
end script
4

3 に答える 3

8

これを処理する最善の方法は、spawn-fcgi をフォアグラウンドで実行し、デーモン化しないように指示することです。spawn-fcgi の man ページには、-nオプションがこれを行うと書かれています。次に、この新興ジョブ全体を次のように書き換えることができます。

start on runlevel [2345]
stop on runlevel [016]
respawn    

exec spawn-fcgi -n -d /home/ubuntu/workspace/rtbopsConfig/myserver/ -f /home/ubuntu/workspace/rtbopsConfig/myserver/index.py -a 127.0.0.1 -p 9001 >> /var/log/myserver.sys.log 2>&1

Upstart 1.4 では、ログの方向さえ必要ないことに注意してください。これは、デフォルトで「コンソール ログ」に設定されているため、すべての出力が /var/log/upstart/$UPSTART_JOB.log.. にあるため、次のようになります。

start on runlevel [2345]
stop on runlevel [016]
respawn

exec spawn-fcgi -n -d /home/ubuntu/workspace/rtbopsConfig/myserver/ -f /home/ubuntu/workspace/rtbopsConfig/myserver/index.py -a 127.0.0.1 -p 9001

これは root として実行されますが、ポート 9001 でリッスンすることに注意してください。Upstart 1.5 の場合 (Ubuntu 12.04 以降) これを追加するだけです:

setuid nobody
setgid nogroup

(ファイルが /home/ubuntu にあるため、nobody/nogroup を ubuntu/ubuntu に変更する必要がある場合があります)

また、ファイルシステムがマウントされる前、およびネットワークが起動する前にイベントが発生するstart on startupため、確実に機能しないことに注意してください。startupまたstart on shutdown、実際のイベントではないため、単純なだけでは機能しません。man upstart-eventsその他のイベントについては、 を参照してください。

于 2012-09-07T19:13:39.383 に答える
2

プレストップがサーバーを停止していると思われるため、Upstart がサーバーを停止しようとすると、停止する実行中のプロセスがなく、そのエラーが発生します。

于 2012-09-15T14:06:56.980 に答える