我正在用Django命令python manage.py run_gunicorn
开始枪手。我怎样才能正确地停止炮弹?
注意:我有一个带有结构的半自动服务器部署。因此,使用像ps aux | grep gunicorn
这样的东西通过pid手动杀死进程不是一种选择。
一种选择是使用Supervisor
来管理Gunicorn。
然后我再也看不出为什么你不能通过Fabric
杀死这个过程。假设你让Gunicorn write a pid file你可以轻松地在Fabric
命令中读取该文件。
这样的事情应该有效:
run("kill `cat /path/to/your/file/gunicorn.pid`")
要查看进程是ps ax|grep gunicorn
并停止gunicorn_django是pkill gunicorn
。
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
显示具有特定端口的守护进程。
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 gunicorn
和gunicorn -v
来找出答案。