系统监控 / 命令文档
Linux ps 命令
概述
Process Status - 进程状态查看与管理的核心工具
命令定义与含义
ps (Process Status) 是Linux系统中用于显示当前运行进程状态的命令。它提供系统中活动进程的快照信息。
核心概念 进程:正在运行的程序实例 PID:进程标识符,系统唯一 PPID:父进程ID 状态:进程当前运行状态
ps [选项] # 基本语法
主要使用场景
系统监控
监控系统进程状态,识别异常进程和资源占用
故障排查
查找僵尸进程、高CPU占用进程,定位系统性能问题
进程管理
配合kill命令终止进程,进行进程生命周期管理
性能分析
分析进程资源使用情况,优化系统性能
常用选项详解
| 选项 | 选项 | 含义 | 含义 | 示例 | 示例 |
|---|---|---|---|---|---|
| -e | -e | 显示所有进程 | 显示所有进程 | ps -e | ps -e |
| -f | -f | 完整格式显示 | 完整格式显示 | ps -ef | ps -ef |
| -u | -u | 指定用户进程 | 指定用户进程 | ps -u root | ps -u root |
| aux | aux | BSD风格详细信息 | BSD风格详细信息 | ps aux | ps aux |
| -p | -p | 指定进程ID | 指定进程ID | ps -p 1234 | ps -p 1234 |
基础查看命令
ps aux # 查看所有进程详细信息
ps -ef # 标准格式显示所有进程
ps -u username # 查看指定用户进程
进程过滤与搜索
ps aux | grep nginx # 查找nginx进程
ps -ef | grep -v grep | grep java # 精确查找java进程
资源监控命令
ps aux --sort=-%cpu | head -10 # CPU占用TOP10
ps aux --sort=-%mem | head -10 # 内存占用TOP10
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem # 自定义字段排序
故障排查命令
ps aux | awk '$8 ~ /^Z/ { print $2 }' # 查找僵尸进程ps -eo stat,pid,cmd | grep ^D # 查找不可中断进程
进程树显示
ps auxf # 显示进程树结构
ps -ejH # 层次化显示进程关系
实时监控脚本
watch -n 1 'ps aux --sort=-%cpu | head -20' # 每秒刷新CPU排行
自定义输出格式
ps -eo pid,user,cmd,pcpu,pmem,time # 自定义显示字段
进阶技巧 使用 --forest 选项显示进程关系树 结合 awk 和 sed 进行复杂数据处理 利用 --no-headers 去除表头便于脚本处理 使用 -o 选项完全自定义输出格式
运维实战案例
案例1:服务器CPU飙升排查
ps aux --sort=-%cpu | head -5 # 找出CPU占用最高的5个进程
ps -p $PID -o pid,cmd,pcpu,pmem,time # 详细查看问题进程案例2:内存泄漏检测
ps -eo pid,cmd,pmem --sort=-%mem | head -10 # 内存占用排行
ps -p $PID -o pid,vsz,rss,pmem,cmd # 查看进程内存详情案例3:清理僵尸进程
ps aux | awk '$1 ~ /^Z/ { print "僵尸进程 PID:", $2, " 父进程 PPID:", $3 }' # 注意:僵尸进程无法被 kill(已死),处理父进程或重启其所属服务即可回收案例4:服务进程监控脚本
#!/bin/bash
while true; do
if ! ps aux | grep -q "[n]ginx"; then
systemctl start nginx
fi
sleep 30
done