Djangoコマンドpython manage.py run_gunicorn
。 gunicornを適切に停止するにはどうすればよいですか?
注:ファブリックを使用した半自動サーバー展開があります。したがって、ps aux | grep gunicorn
pidによってプロセスを手動で強制終了することはオプションではありません。
1つのオプションは、 Supervisor
を使用してGunicornを管理することです。
それから、なぜFabric
を介してプロセスを強制終了できないのかわかりません。 Gunicorn pidファイルを書き込む を許可すると仮定すると、Fabric
コマンドでそのファイルを簡単に読み取ることができます。
このような何かが動作するはずです:
run("kill `cat /path/to/your/file/gunicorn.pid`")
プロセスを表示するにはps ax|grep gunicorn
そしてgunicorn_Djangoを停止するのはpkill gunicorn
。
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
は、特定のポートを持つデーモンを示します。
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 gunicorn
とgunicorn -v
を使用して調べる必要があります。