我正在使用Django命令python manage.py run_gunicorn
开始使用gunicorn。我怎样才能正确地停止枪炮?
注意:我使用fabric进行半自动服务器部署。因此,使用像ps aux | grep gunicorn
这样的东西来手动杀死pid的过程不是一种选择。
答案 0 :(得分:61)
要查看流程ps ax|grep gunicorn
并停止gunicorn_django pkill gunicorn
。
答案 1 :(得分:21)
一种选择是使用Supervisor
来管理Gunicorn。
然后我再也看不出为什么你不能通过Fabric
杀死这个过程。
假设您让Gunicorn write a pid file可以轻松地在Fabric
命令中读取该文件。
这样的事情应该有效:
run("kill `cat /path/to/your/file/gunicorn.pid`")
答案 2 :(得分:3)
开始:
gunicorn --pid PID_FILE APP:app
停止:
kill $(cat PID_FILE)
--pid
的 gunicorn
标志需要一个参数:将存储进程 ID 的文件。该文件也会在服务停止时自动删除。
为了简单起见,我使用了 PID_FILE
,但您应该使用 /tmp/MY_APP_PID
之类的名称作为文件名。
如果 PID 文件存在,则表示服务正在运行。如果它不存在,则该服务未运行。要停止该服务,只需将其终止即可。
您还可以包含 --daemon
标志,以便将进程与当前 shell 分离。
答案 3 :(得分:2)
pkill gunicorn
或
pkill -P1 gunicorn
应该杀死所有正在运行的Gunicorn进程
答案 4 :(得分: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,命令和参数
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
来找出答案。
答案 5 :(得分:0)
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
显示具有特定端口的守护程序。
答案 6 :(得分:0)
要启动在gunicorn上运行的服务
sudo systemctl enable myproject
sudo systemctl start myproject
或
sudo systemctl restart myproject
但是要停止在gunicorn上运行该服务
sudo systemctl stop myproject
了解更多有关使用gunicorn please refer here进行python应用程序托管的信息
答案 7 :(得分:0)
如果您运行它是我的错误,并且您想在不编写额外脚本和不重新启动服务器的情况下停止它。所以这是一个技巧。
第一个卸载 gnuicorn
sudo pip3 uninstall gunicorn # i am using python3 in ubuntu server so i am using sudo and pip3
然后终止为您的应用程序端口号运行的进程(我假设端口号默认为 8000)。
要获取运行您的应用的进程号,请使用以下命令:
sudo lsof -i:8000
结果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gunicorn 17XX95 root 6u IPv4 155XXXX 0t0 TCP localhost:8000
gunicorn 17XX97 root 6u IPv4 155XXXX 0t0 TCP localhost:8000
然后杀掉进程,有可能得到不止一个进程id(PID),见上面的结果。
sudo kill 17XX95 17XX97
现在如果你想重新安装gunicorn你可以安装它
sudo pip3 install gunicorn