要准确查看服务器上Nginx进程的运行状态,需通过SSH登录服务器后执行命令:ps aux | grep nginx,该命令会列出所有包含”nginx”关键字的进程,其中主进程以root权限运行,工作进程以www-data或nginx用户运行(取决于系统配置)。

基础进程查看方法
-
进程列表解析
执行以下命令获取详细信息:ps -ef | grep nginx
典型输出示例:
root 1234 1 0 10:00 ? 00:00:00 nginx: master process /usr/sbin/nginx www-data 5678 1234 0 10:00 ? 00:00:12 nginx: worker process- master process:主进程(PID 1234),负责配置加载和工作进程管理
- worker process:工作进程(PID 5678),实际处理客户端请求
-
进程树查看
使用pstree直观显示层级关系:pstree -p | grep nginx
输出示例:
|-nginx(1234)-+-nginx(5678) |-nginx(5679)此结构清晰展示主进程与工作进程的父子关系

高级监控技术
实时进程资源监控
top -p $(pgrep nginx | tr 'n' ',' | sed 's/,$//')
- 动态显示所有Nginx进程的CPU/内存占用
- 按
Shift+H可切换线程视图
端口监听验证
sudo lsof -i :80 -i :443 -P -n | grep nginx
确认工作进程是否正常监听HTTP/HTTPS端口,输出应包含:
nginx 5678 www-data 6u IPv4 0xffff 0t0 TCP :80 (LISTEN)
进程异常诊断方案
场景1:工作进程频繁崩溃
- 检查错误日志定位原因:
tail -f /var/log/nginx/error.log | grep -i 'worker process'
- 常见解决方案:
- 调整
worker_connections与ulimit -n的匹配关系 - 增加
worker_rlimit_nofile值至超过系统限制
- 调整
场景2:主进程无法启动
sudo nginx -t && sudo systemctl status nginx -l
nginx -t验证配置文件语法systemctl status显示systemd的详细错误日志
专业级运维策略
-
进程热升级方案
零停机重载配置:sudo kill -HUP $(cat /var/run/nginx.pid)
原理:主进程保留旧工作进程处理现存连接,同时启动新配置的进程
-
多实例隔离部署
通过命名空间实现资源隔离:sudo systemd-run --slice=nginx-app.slice /usr/sbin/nginx -c /etc/nginx-app/nginx.conf
优势:

- 独立CPU/Memory cgroup控制
- 分离的日志和PID空间
- 避免单点配置错误影响全局
安全审计要点
-
定期检查进程权限:
ps -eo pid,user,group,args | awk '$4~/nginx/ {print $1,$2,$3}'确保工作进程以非root用户运行
-
检测异常子进程:
sudo auditd -w /usr/sbin/nginx -p x -k nginx_exec
通过Linux审计系统监控二进制文件执行
原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/31993.html