You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何杀死uwsgi进程且避免worker进程自动重新生成

uWSGI进程终止后自动重启的彻底解决方法

问题根因

杀进程后自动重启的核心原因90%以上是uWSGI服务被systemd/supervisor这类进程监控工具托管了,手动杀掉uWSGI进程后,监控工具检测到进程退出会自动触发重启逻辑。

分步解决步骤

第一步:排查是否被进程管理工具托管

检查systemd托管

执行命令查看是否有uWSGI相关的systemd服务:

sudo systemctl list-units --type=service | grep -i uwsgi

如果有匹配的服务项,直接通过systemd停止服务即可:

# 停止运行中的服务
sudo systemctl stop <你的uwsgi服务名>
# 如需彻底禁止开机自启+禁止自动重启,执行以下命令
sudo systemctl disable <你的uwsgi服务名>

检查supervisor托管

执行命令查看supervisor托管的服务列表:

sudo supervisorctl status

如果列表中有你的uWSGI项目,通过supervisor停止:

# 停止指定项目
sudo supervisorctl stop <你的uWSGI项目名>
# 如需永久关闭自动重启,编辑对应supervisor配置文件(一般存放在/etc/supervisor/conf.d/目录下),将autorestart参数设为false,之后重载配置生效
sudo supervisorctl update

第二步:无托管场景下的彻底清退方法

如果确认没有进程管理工具托管,说明是master进程未正常退出导致worker被自动拉起,按以下顺序执行命令即可:

  1. 先正常发送停止信号给master进程:
uwsgi --stop /tmp/MyProject.pid
  1. 等待3秒后检查是否还有残留进程:
ps aux | grep uwsgi | grep -v grep
  1. 如果还有残留,先终止所有worker进程,再杀master:
sudo pkill -f uwsgi -s SIGTERM
sleep 2
kill -SIGTERM `cat /tmp/MyProject.pid`
  1. 仍有残留的话执行强制清理:
sudo pkill -9 -f uwsgi

补充说明

你的配置中已经开启了die-on-term = true,正常发送SIGTERM信号就可以完全停止uWSGI所有进程,常规操作下不需要用-9强制杀进程,避免出现pid文件残留、socket文件未清理的问题。

内容的提问来源于stack exchange,提问作者Jo Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:45:03