nginx主进程(master)负责配置加载与进程管理,worker进程实际处理请求;二者必须同时存在且状态健康,仅靠进程数量无法判断服务可用性,需结合端口监听、连接响应及日志验证。

直接通过系统级进程管理命令就能清晰区分 Nginx 主进程(master)和子进程(worker),无需额外工具。关键不是“有没有进程”,而是“角色是否正确、状态是否健康”。
确认 master 与 worker 进程是否同时存在
执行 ps aux | grep nginx,应看到两类进程:
- 一个 nginx: master process(通常属 root 用户,负责配置加载、进程调度)
- 多个 nginx: worker process(通常属 nobody 或 nginx 用户,实际处理请求)
若只有 master 没有 worker:说明配置加载失败、端口被占或权限不足;
若只有 worker 没有 master:master 已异常退出,服务不可持续,需立即干预。
用启动时间判断新旧进程切换状态
执行 ps -eo pid,comm,lstart | grep nginx,重点看时间戳:
- 新 master 进程的 lstart 时间应略晚于你执行
nginx -s reload的时刻 - worker 进程的启动时间应与新 master 接近(而非旧时间)
- 若仍有明显早于 reload 时间的 worker,属于正常残留——它正逐步关闭活跃连接,数量应随时间递减
用进程状态验证服务可用性
仅存在进程不等于服务就绪,还需确认其响应能力:
- 检查监听端口:ss -tnlp | grep :80(或对应端口),reload 前后都应显示 nginx 占用
- 测试连接连续性:在 reload 同时运行
while true; do curl -s -o /dev/null -w "%{http_code}\n" http://localhost/; sleep 0.1; done,全程应稳定返回 200 - 查错误日志:tail -n 10 /var/log/nginx/error.log,确认无
bind() to 0.0.0.0:80 failed或reload failed类报错
自动化检查可结合 pgrep 与 systemctl
日常巡检或脚本中推荐以下轻量方式:
- 查 master 是否存活:pgrep -f "nginx: master process" > /dev/null(返回 0 表示正常)
- 查 systemd 管理状态:systemctl is-active --quiet nginx(静默成功即为 active)
- 避免只查 worker:因 master 异常后 worker 可能残留但无法接受新连接











