如何正确地停止枪炮

问题描述 投票:33回答:4

我正在用Django命令python manage.py run_gunicorn开始枪手。我怎样才能正确地停止炮弹?

注意:我有一个带有结构的半自动服务器部署。因此,使用像ps aux | grep gunicorn这样的东西通过pid手动杀死进程不是一种选择。

django gunicorn django-manage.py
4个回答
25
投票

一种选择是使用Supervisor来管理Gunicorn。

然后我再也看不出为什么你不能通过Fabric杀死这个过程。假设你让Gunicorn write a pid file你可以轻松地在Fabric命令中读取该文件。

这样的事情应该有效:

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

65
投票

要查看进程是ps ax|grep gunicorn并停止gunicorn_django是pkill gunicorn


1
投票

pkill gunicorn停止所有gunicorn守护进程。因此,如果您使用不同的端口运行多个gunicorn实例,请尝试使用此shell脚本。

#!/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显示具有特定端口的守护进程。


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

ps -eo pid,command只会获取进程ID,命令和args

grep -v grep摆脱'grep --color = auto xxx'之类的输出

sort | head -1做升序排序并获得第一线

awk '{print $1}'得到回报

还有一件事你可能需要注意:安装了gunicorn以及你正在使用哪一个?

Ubuntu 16默认安装了gunicorn,可执行文件是gunicorn3,位于/ usr / bin / gunicorn3上,如果你通过pip安装它,它位于/ usr / local / bin / gunicorn。你需要使用which gunicorngunicorn -v来找出答案。

© www.soinside.com 2019 - 2024. All rights reserved.