我想重启一个使用gunicorn运行的Django服务器。我知道如何在我的系统中使用gunicorn。但是现在我需要重新启动一个不是我设置的远程服务器。我不知道masterpid重启服务器怎么才能得到masterPID。通常我HUP gunicorn与sudo kill -s HUP masterpid。我试过ps aux|grep gunicorn我在任何地方都没有找到gunicorn.pid文件。如何获得masterpid?
masterpid
HUP
sudo kill -s HUP masterpid
ps aux|grep gunicorn
gunicorn.pid
jchrr9hc1#
下面的一个班轮,得到了完美的工作完成:
kill -HUP `ps -C gunicorn fch -o pid | head -n 1`
ps -C gunicorn只列出gunicorn命令的进程,即worker和master进程。worker是master的子进程,如使用ps -C gunicorn fc -o ppid,pid,cmd所示。我们只需要master的pid,因此h标志用于删除第一行PID文本。注意,f标志确保master打印在worker之上。正确的做法是只向master发送HUP信号。通过这种方式,gunicorn可以正常重启,* 只重新创建worker,而不是master *。
ps -C gunicorn
gunicorn
ps -C gunicorn fc -o ppid,pid,cmd
h
f
master
pgx2nnw82#
您可以使用选项'-p'运行gunicorn,这样您就可以从pid文件中获取主进程的pid。例如:
gunicorn -p app.pid your_app.wsgi.app
您可以通过以下方式获取master的pid:
cat app.pid
4urapxun3#
这也应该可以重新启动gunicorn:
ps aux |grep gunicorn |grep yourapp | awk '{ print $2 }' |xargs kill -HUP
5hcedyr04#
**第一步:**进入/etc/systemd/system/gunicorn.service,打开文件,添加以下行
PIDFile=/run/gunicorn/gunicorn.pid --pid /run/gunicorn/gunicorn.pid
示例:
[Service] PIDFile=/run/gunicorn/gunicorn.pid WorkingDirectory=/home/django/django_project ExecStart=/usr/bin/gunicorn --pid /run/gunicorn/gunicorn.pid --name=django_project..... User=django Group=django
**第二步:**如果gunicorn. conf文件不存在,请转到/etc/tmpfiles.d/新建文件gunicorn.conf
添加波纹管
d /run/gunicorn 0755 django django -
其中django =用户名和组名
**第三步:**重启服务器或/etc/init.d/gunicorn restart重启gunicorn生效您的pid文件位置是/run/gunicorn/gunicorn.pid现在检查..
/etc/init.d/gunicorn restart
im9ewurl5#
在krizex的答案answer的基础上,当主pid存储在文件中时,您可以通过一个命令优雅地重新加载应用程序,如下所示
pid
$ cat app.pid |xargs kill -HUP
我本来想对答案本身发表评论,但我还没有足够的声誉来评论😢。
5条答案
按热度按时间jchrr9hc1#
下面的一个班轮,得到了完美的工作完成:
说明
ps -C gunicorn
只列出gunicorn
命令的进程,即worker和master进程。worker是master的子进程,如使用ps -C gunicorn fc -o ppid,pid,cmd
所示。我们只需要master的pid,因此h
标志用于删除第一行PID文本。注意,f
标志确保master
打印在worker之上。正确的做法是只向master发送
HUP
信号。通过这种方式,gunicorn
可以正常重启,* 只重新创建worker,而不是master *。pgx2nnw82#
您可以使用选项'-p'运行gunicorn,这样您就可以从pid文件中获取主进程的pid。例如:
您可以通过以下方式获取master的pid:
4urapxun3#
这也应该可以重新启动gunicorn:
5hcedyr04#
**第一步:**进入/etc/systemd/system/gunicorn.service,打开文件,添加以下行
示例:
**第二步:**如果gunicorn. conf文件不存在,请转到/etc/tmpfiles.d/新建文件gunicorn.conf
添加波纹管
其中django =用户名和组名
**第三步:**重启服务器或
/etc/init.d/gunicorn restart
重启gunicorn生效您的pid文件位置是/run/gunicorn/gunicorn.pid现在检查..
im9ewurl5#
在krizex的答案answer的基础上,当主
pid
存储在文件中时,您可以通过一个命令优雅地重新加载应用程序,如下所示我本来想对答案本身发表评论,但我还没有足够的声誉来评论😢。