可通过检查配置文件中 worker_processes 值并结合 ps 命令筛选含“worker process”的子进程来获知实际运行数量及 pid;需先确认 master 进程存活且 pid 文件有效,再用 pgrep -p 或 ps -eo 按父进程查找。

要查看 Nginx 当前 worker_processes 的实际运行数量及各 Worker 进程的 PID,核心是结合配置检查与系统进程观察——Nginx 本身不提供“实时 worker 数量状态 API”,但可通过以下方式准确获知。
确认配置中设置的 worker_processes 值
该值决定 Nginx 启动时预期 fork 的 Worker 进程数,但最终实际数量受运行模式(master/worker)、系统资源及配置影响:
- 查看主配置文件(通常是
/etc/nginx/nginx.conf)中worker_processes行:grep -E '^\s*worker_processes' /etc/nginx/nginx.conf - 若为
auto,Nginx 会根据 CPU 核心数自动设置(可通过nginx -t -v启动时日志或lscpu | grep "^CPU(s)"推断) - 注意:该值仅在 master 进程启动时读取,修改后需重载(
nginx -s reload)或重启才生效
列出当前所有 Nginx Worker 进程及其 PID
Worker 进程由 master 进程派生,运行时 UID 通常为 www-data、nginx 或自定义用户,且命令行含 "worker process" 字样:
- 通用命令(推荐):
ps -eo pid,user,args --ppid $(cat /var/run/nginx.pid 2>/dev/null) | grep 'worker process'
(先读 master PID,再找其子进程中带worker process的行) - 简洁替代(适用于标准安装):
ps aux | grep 'nginx: worker' | grep -v grep - 若需纯 PID 列表(便于脚本处理):
pgrep -P $(cat /var/run/nginx.pid 2>/dev/null) | xargs -r ps -o pid= -p
验证 Master 进程是否存在及对应 PID 文件位置
Worker 进程依赖 master 存活;若 master 异常退出,Worker 也会陆续终止。确认 master 状态是判断 Worker 是否“正常运行”的前提:
- 查 master 进程:
ps aux | grep 'nginx: master' | grep -v grep - 确认 PID 文件路径(默认
/var/run/nginx.pid,可在配置中用pid指令修改):grep -E '^\s*pid' /etc/nginx/nginx.conf - 检查 PID 文件是否有效:
kill -0 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null && echo "master alive" || echo "master dead"
区分 Worker 进程与其它 nginx 相关进程
避免误把 cache manager、cache loader、health check 等辅助进程当作 Worker:
- Worker 进程命令行固定含
"worker process"(注意空格和大小写) - Cache manager 进程显示为
"cache manager process" - Health check 或 stream 模块可能产生额外子进程,但不会标记为
worker - 使用
ps -f -o pid,ppid,comm,args可清晰查看父子关系与完整命令行











