Linux 命令:ps

概述

  • 以下是Linux ps(Process Status)命令的详细教程,包含语法、选项、输出解析及实战技巧
  • 资料已经分类整理好:https://pan.quark.cn/s/26d73f7dd8a7

1. 基本概念与语法

ps用于显示当前系统的进程状态,可静态查看某一时刻的进程信息。

核心语法

ps [选项]

三类选项风格

  1. UNIX风格:以 - 开头(如 -ef)。
  2. BSD风格:无 - 开头(如 aux)。
  3. GNU长选项:以 -- 开头(如 --forest)。

2. 常用选项组合

2.1 查看完整进程树
ps -ejH  # 以层级结构显示所有进程
ps axjf  # 显示进程树(BSD风格)
2.2 查看所有用户的进程
ps -ef  # 显示所有进程的详细信息
ps aux  # 显示所有进程的资源占用情况
2.3 实时监控特定进程
ps -p 1234 -o %cpu,%mem,cmd  # 监控PID为1234的进程资源占用
watch -n 1 "ps -p 1234 -o %cpu,%mem,cmd"  # 每秒刷新一次
2.4 按CPU或内存排序
ps aux --sort=-%cpu  # 按CPU使用率降序排列
ps aux --sort=-%mem  # 按内存使用率降序排列

3. 输出字段解析

3.1 ps -ef 输出字段
字段含义
UID进程所有者的用户ID
PID进程ID
PPID父进程ID
CCPU使用率(相对百分比)
STIME进程启动时间
TTY控制终端(? 表示无终端)
TIME进程使用的CPU总时间
CMD启动进程的命令行
3.2 ps aux 输出字段
字段含义
USER进程所有者
PID进程ID
%CPUCPU使用率
%MEM内存使用率
VSZ虚拟内存大小(KB)
RSS物理内存占用(KB)
TTY控制终端
STAT进程状态(见下表)
START进程启动时间
TIME进程使用的CPU时间
COMMAND启动进程的命令行
3.3 进程状态(STAT字段)
状态码含义
R运行中(Running或Runnable)
S睡眠中(可中断)
D不可中断的睡眠(通常是IO等待)
T暂停(被信号暂停)
Z僵尸进程(已终止但未被清理)
s会话领导者
l多线程进程
+前台进程组

4. 高级筛选与格式化

4.1 按条件筛选进程
ps -ef | grep nginx  # 查找包含"nginx"的进程
ps -C nginx          # 查找名为"nginx"的进程
ps -U root           # 查找root用户的进程
ps --ppid 1234       # 查找父进程ID为1234的所有子进程
ps -p 1,2,3          # 查找指定PID的进程
ps -ef --forest      # 以树状结构显示进程关系
4.2 自定义输出格式
ps -eo pid,user,%cpu,%mem,args  # 自定义显示字段
ps -eo pid,user,%cpu,%mem,args --sort=-%cpu  # 按CPU排序
ps -o pid,comm,%cpu -p $(pgrep nginx)  # 仅显示nginx进程的特定字段
4.3 监控进程资源占用趋势
# 每2秒刷新一次,显示top 5 CPU占用进程
watch -n 2 "ps aux --sort=-%cpu | head -n 6"

# 每5秒记录一次系统CPU占用最高的10个进程
while true; do ps aux --sort=-%cpu | head -n 11 >> /var/log/top_processes.log; sleep 5; done

5. 与其他命令组合实战

5.1 统计用户进程数量
ps -ef | awk '{print $1}' | sort | uniq -c | sort -nr
5.2 查找占用内存最大的进程并杀死
# 显示内存占用top 3的进程
ps aux --sort=-%mem | head -n 4

# 安全杀死内存占用最高的进程(先发送SIGTERM,再发送SIGKILL)
pid=$(ps aux --sort=-%mem | awk 'NR==2 {print $2}')
kill $pid; sleep 2; kill -9 $pid
5.3 监控特定服务的资源占用
# 监控MySQL服务的CPU和内存变化
while true; do ps -p $(pgrep mysql) -o %cpu,%mem; sleep 1; done
5.4 查找僵尸进程
ps aux | grep 'Z'  # 查找状态为Z的进程

6. 注意事项

  1. ps vs top
    • ps:静态查看某一时刻的进程信息。
    • top:动态实时监控进程资源占用。
  2. 僵尸进程处理
    • 僵尸进程(STAT=Z)是已终止但未被父进程回收的进程,过多会占用PID资源。
    • 通常需杀死其父进程(使用 kill -9 PPID)。
  3. 进程状态异常
    • D 状态(不可中断睡眠)过久可能表示系统IO问题。
    • 大量僵尸进程可能表示程序有bug。
  4. 性能影响
    • 频繁执行 ps 对系统性能影响极小,但大规模筛选(如 ps -ef | grep)可能消耗CPU。

7. 总结

ps 是Linux系统中最基础的进程监控工具,核心用法包括:

  • 查看进程状态ps -efps aux
  • 进程树展示ps -ejHps axjf
  • 自定义筛选:结合 -C-U--ppid 等选项
  • 格式化输出:使用 -o 选项自定义字段

配合其他命令(如 grepawksort),ps 可实现强大的进程分析功能,是系统运维和故障排查的必备工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值