ps
(process status)命令是Linux系统中最基础且强大的进程查看工具,它能显示当前系统的进程状态信息。下面我将从多个维度深入分析这个命令。
ps [options]
Unix风格:前面带-
-e
:显示所有进程-f
:全格式显示-l
:长格式显示-u
:显示用户导向格式-a
:显示终端上的所有进程(包括其他用户的)BSD风格:不带-
a
:显示终端上的所有进程u
:显示面向用户的格式x
:显示无控制终端的进程GNU风格:前面带--
--forest
:显示进程树-o
:自定义输出字段
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
--sort
:排序输出
--sort=-%cpu
--no-headers
:不显示标题行
显示所有进程的完整信息
ps -ef
显示进程树结构
ps -ejH
ps axjf
ps -e --forest
按内存使用排序
ps aux --sort=-%mem | head -10
按CPU使用排序
ps aux --sort=-%cpu | head -10
查看特定用户的进程
ps -u username
查看特定进程的详细信息
ps -p PID -o pid,ppid,cmd,%mem,%cpu
USER
:进程所有者PID
:进程ID%CPU
:CPU使用率%MEM
:内存使用率VSZ
:虚拟内存大小(KB)RSS
:常驻内存大小(KB)TTY
:终端STAT
:进程状态
R
:运行中S
:睡眠中D
:不可中断的睡眠Z
:僵尸进程T
:停止或被追踪<
:高优先级N
:低优先级s
:会话领导者l
:多线程+
:前台进程组START
:进程启动时间TIME
:CPU使用时间COMMAND
:启动命令结合grep过滤进程
ps aux | grep nginx
显示进程的线程
ps -eLf
ps axms
显示进程的环境变量
ps e -p PID
持续监控进程变化
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -20'
自定义输出格式
ps -eo pid,user,args --sort user
排查高负载问题
ps aux --sort=-%cpu | head -10
查找内存泄漏进程
ps aux --sort=-%mem | head -10
检查僵尸进程
ps aux | grep 'Z'
查看服务是否运行
ps aux | grep [s]shd
分析进程启动时间
ps -eo pid,lstart,cmd | grep nginx
ps
命令的输出是瞬时的,显示的是执行命令那一刻的进程状态
不同Linux发行版的ps
命令可能有细微差异
对于持续监控,建议使用top
或htop
命令
在脚本中使用时,建议指定明确的输出格式,避免不同环境下的格式差异
使用ps
查找到问题进程后,通常需要结合strace
、lsof
等工具进一步分析
掌握ps
命令的各种用法,能够帮助系统管理员快速定位系统性能问题,分析进程行为,是Linux系统管理的重要技能之一。