nginx停止服务主要通过nginx -s信号机制向master进程发送控制信号;推荐使用/usr/local/nginx/sbin/nginx -s quit平缓退出或-s stop快速停止,需确保pid路径匹配,否则需配合-g指定;也可用kill -quit手动终止。

Nginx 二进制安装后,停止服务主要依赖 nginx -s 信号机制,核心是向 master 进程发送控制信号。只要 Nginx 正常运行且能定位到 master 进程(通常通过 pid 文件或进程列表),就能安全停止。
确认 Nginx 是否正在运行
先检查主进程是否存在:
ps -ef | grep nginx # 或更精准地过滤 master 进程 ps aux | grep "nginx: master"
看到类似 nginx: master process /usr/local/nginx/sbin/nginx 的行,说明服务已启动。
标准停止方式(推荐)
使用 -s 参数发送信号,需确保当前路径在 sbin/ 目录下,或使用绝对路径:
# 平缓退出(推荐):处理完当前请求再关闭,不丢连接 /usr/local/nginx/sbin/nginx -s quit # 快速停止:立即终止所有 worker,不等待请求完成 /usr/local/nginx/sbin/nginx -s stop
⚠️ 注意:-s quit 和 -s stop 都要求 Nginx 启动时使用了默认 pid 路径(通常是 logs/nginx.pid)。如果启动时指定了自定义 pid 文件(如 -g "pid /var/run/nginx.pid;"),则必须带上相同 -g 参数才能正确找到进程:
/usr/local/nginx/sbin/nginx -g "pid /var/run/nginx.pid;" -s quit
手动 kill 方式(备用)
当信号方式失效(如 pid 文件丢失或权限问题),可手动获取 master 进程 ID 后发送信号:
# 方法1:从默认 pid 文件读取
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)
# 方法2:用 ps 提取 PID(更通用)
kill -QUIT $(ps aux | grep "nginx: master" | grep -v grep | awk '{print $2}')
其中 -QUIT 对应平缓退出,-TERM 或 -INT 等效于 -s stop,-HUP 是重启信号,不是停止。
验证是否已停止
再次执行:
ps aux | grep nginx
若输出中只剩 grep 自身进程(或完全无 nginx 相关行),说明已成功停止。
不复杂但容易忽略的是 pid 文件路径和信号类型匹配——用错路径或发错信号,可能导致命令看似执行却无效果。











