- 进程特点 :
gunicorn是多进程模型,终止部分进程后,主进程会重启新的工作进程,因此端口仍被占用。
一、查看 gunicorn 主进程
gunicorn主进程会管理多个工作进程,可通过以下方式定位主进程:
-
通过端口关联进程树 :先获取端口关联的任意进程 PID(如从之前的
lsof结果中取一个 PID,例如2145928),再查看其进程树:ps -ef | grep 2145928 # 查看该进程的父进程 pstree -p 2145928 # 以树状显示进程关系,根节点即为gunicorn主进程 -
通过进程名称过滤 :直接筛选
gunicorn进程,主进程通常是启动命令对应的进程(如包含启动参数):ps -ef | grep gunicorn | grep -v grep
二、停止 gunicorn 主进程
-
通过主进程 PID 终止 :找到主进程 PID 后,用
kill(或kill -9强制终止):sudo kill [主进程PID] # 若无法终止,使用强制模式 sudo kill -9 [主进程PID] -
通过端口强制释放(不推荐,可能残留进程):若无法定位主进程,可通过端口强制关闭所有关联进程:
sudo fuser -k 51222/tcp -
通过服务管理工具(推荐,若 gunicorn 以服务运行) :若
gunicorn是通过systemd等服务管理的,直接操作服务:# 停止服务 sudo systemctl stop gunicorn.service # 重启服务(若需释放端口后重新启动)