web-dev-qa-db-ja.com

gunicornを適切に停止する方法

Djangoコマンドpython manage.py run_gunicorn。 gunicornを適切に停止するにはどうすればよいですか?

注:ファブリックを使用した半自動サーバー展開があります。したがって、ps aux | grep gunicorn pidによってプロセスを手動で強制終了することはオプションではありません。

40
j7nn7k

1つのオプションは、 Supervisor を使用してGunicornを管理することです。

それから、なぜFabricを介してプロセスを強制終了できないのかわかりません。 Gunicorn pidファイルを書き込む を許可すると仮定すると、Fabricコマンドでそのファイルを簡単に読み取ることができます。

このような何かが動作するはずです:

run("kill `cat /path/to/your/file/gunicorn.pid`")
25
arie

プロセスを表示するにはps ax|grep gunicornそしてgunicorn_Djangoを停止するのはpkill gunicorn

65
Voislav Sauca

pkill gunicornは、すべてのgunicornデーモンを停止します。したがって、異なるポートでgunicornの複数のインスタンスを実行している場合は、このシェルスクリプトを試してください。

#!/bin/bash
Port=5000
pid=`ps ax | grep gunicorn | grep $Port | awk '{split($0,a," "); print a[1]}' | head -n 1`
if [ -z "$pid" ]; then
  echo "no gunicorn deamon on port $Port"
else
  kill $pid
  echo "killed gunicorn deamon on port $Port"
fi

ps ax | grep gunicorn | grep $Portは、特定のポートを持つデーモンを示します。

1
TakaSoft
kill -9 `ps -eo pid,command | grep 'gunicorn.*${moduleName:appName}' | grep -v grep | sort | head -1 | awk '{print $1}'`

ps -eo pid,commandはプロセスID、コマンド、および引数のみを取得します

grep -v grepは、「grep --color = auto xxx」のような出力を取り除きます

sort | head -1は、昇順ソートを行い、最初の行を取得します

awk '{print $1}'でpidを取得します

あなたが注意を払う必要があるかもしれないもう一つのこと:gunicornがインストールされている場所とあなたが使用しているもの?

Ubuntu 16にはデフォルトでgunicornがインストールされています。実行可能ファイルはgunicorn3で/ usr/bin/gunicorn3にあり、pipでインストールした場合は/ usr/local/bin/gunicornにあります。 which gunicorngunicorn -vを使用して調べる必要があります。

0
delusionxb