当前位置:首页>java>Shell编程中的ps命令使用详解

Shell编程中的ps命令使用详解

  • 2026-08-17 03:42:24
Shell编程中的ps命令使用详解


Shell编程中的ps命令使用详解

ps(Process Status)是Linux/Unix系统中最基础且强大的进程查看命令。掌握ps的各种用法对于系统监控、性能分析和故障排查至关重要。本文将全面解析ps命令的使用技巧。

一、基础用法

1.1 最简形式

ps

显示当前终端会话的进程:

  PID TTY          TIME CMD 1234 pts/0    00:00:00 bash 5678 pts/0    00:00:00 ps

1.2 显示所有进程

ps -e    # System V风格ps -A    # 同-eps aux   # BSD风格(最常用)

二、选项风格详解

ps有三种选项风格,不能混用

风格
特点
示例
BSD
不带前导-,分组功能
ps aux
ps lax
System V
带前导-,单个字母
ps -ef
ps -aux
GNU
带前导--,单词形式
ps --sort=-%cpu

注意ps -aux(带横线)会打印警告,应使用ps aux

三、常用选项组合

3.1 经典组合:ps aux

ps aux | head -5

输出字段含义:

  • • USER: 进程所有者
  • • PID: 进程ID
  • • %CPU: CPU使用率
  • • %MEM: 内存使用率
  • • VSZ: 虚拟内存大小(KB)
  • • RSS: 常驻内存大小(KB)
  • • TTY: 终端类型
  • • STAT: 进程状态
  • • START: 启动时间
  • • TIME: 累计CPU时间
  • • COMMAND: 命令行

3.2 System V风格:ps -ef

ps -ef | head -5

输出字段:

  • • UID: 用户ID
  • • PID: 进程ID
  • • PPID: 父进程ID
  • • C: CPU利用率
  • • STIME: 启动时间
  • • TTY: 终端
  • • TIME: CPU时间
  • • CMD: 命令

3.3 长格式输出:ps -efl (BSD: ps lax)

显示更多详细信息,包括优先级(NI)、地址(ADDR)等。

四、进程状态(STAT)代码解读

ps aux | grep sshd

STAT列常见状态:

  • • R: Running 运行中
  • • S: Sleeping 可中断睡眠
  • • D: 不可中断睡眠(通常I/O等待)
  • • T: Stopped 停止
  • • Z: Zombie 僵尸进程
  • • <: 高优先级
  • • N: 低优先级
  • • s: 会话领导者
  • • l: 多线程
  • • +: 前台进程组

五、高级筛选技巧

5.1 按用户筛选

ps -u root       # 显示root用户的进程ps -u root,www   # 多个用户ps -U 1000       # 按UID

5.2 按进程名筛选

ps -C nginx      # 显示名为nginx的进程ps -C sshd,bash  # 多个进程名# 更灵活的筛选(推荐)ps aux | grep python | grep -v grep

5.3 按PID筛选

ps -p 1234       # 显示PID为1234的进程ps -p 1234,5678  # 多个PIDps --pid 1234    # GNU风格

5.4 反向筛选

ps -N -u root    # 显示非root用户的进程

六、自定义输出格式(-o选项)

6.1 常用格式

ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu

6.2 常用字段列表

ps -eo pid,ppid,cmd,%cpu,%mem,etime,nice,pri,stat

6.3 自定义标题

ps -eo "pid ppid command:50 cpu mem" | head

6.4 按CPU/内存排序

# 按CPU降序ps aux --sort=-%cpu | head -10# 按内存升序ps aux --sort=+%mem | tail -10

七、树形结构显示

7.1 显示进程树

ps axjf               # BSD风格ps -ejH               # System V风格ps -ef --forest       # GNU风格

7.2 查找父进程

ps -p 1234 -o pid,ppid,cmd

7.3 显示线程

ps -eLf               # 显示所有线程ps -p 1234 -L         # 显示指定进程的线程

八、实际应用场景

8.1 查找并终止僵尸进程

# 查找僵尸进程ps aux | awk '$8=="Z"'# 查找僵尸进程的父进程ps -eo pid,ppid,stat | grep Z

8.2 监控资源消耗

# 每5秒刷新一次CPU前5名watch -n 5 'ps aux --sort=-%cpu | head -6'# 内存使用超过50%的进程ps aux | awk '$4 > 50'

8.3 脚本中常用技巧

# 获取脚本自身PIDecho $$# 检查进程是否存在pgrep -f "myapp" >/dev/null && echo"Running"# 获取进程启动的完整命令行ps -p $PID -o cmd --no-header

8.4 安全审计

# 查看所有网络相关进程ps aux | grep -E 'ssh|nginx|apache'# 查看没有控制终端的进程(可能的后门)ps aux | awk '$7=="?"'

九、输出字段完整参考

字段
全称
说明
%cpu
%CPU
CPU使用率
%mem
%MEM
内存使用率
args
COMMAND
完整命令行
bsdstart
START
启动时间
comm
COMMAND
命令名(不含路径)
cp
CP
CPU使用率(过时)
cputime
TIME
CPU时间
egid
EGID
有效组ID
euid
EUID
有效用户ID
f
F
进程标志
gid
GID
组ID
pgid
PGID
进程组ID
pid
PID
进程ID
ppid
PPID
父进程ID
psr
PSR
当前CPU
rgid
RGID
真实组ID
ruid
RUID
真实用户ID
rss
RSS
常驻内存(KB)
sgi_p
P
CPU序号
size
SZ
内存页数
start
STARTED
启动时间
start_time
START
启动时间
stat
STAT
状态代码
sz
SZ
物理内存使用
tname
TTY
终端名称
uid
UID
用户ID
uname
USER
用户名
user
USER
进程所有者
vsz
VSZ
虚拟内存(KB)

十、最佳实践与技巧

10.1 别名设置

.bashrc中添加:

alias psc='ps aux --sort=-%cpu | head -10'alias psm='ps aux --sort=-%mem | head -10'alias pst='ps -ef --forest'

10.2 与grep配合

# 避免grep自身出现ps aux | grep [s]shdps aux | grep sshd | grep -v grep

10.3 性能考虑

# 单次快照使用psps aux# 持续监控使用toptop -b -n 1  # 批处理模式

10.4 与pgrep/pkill配合使用

# 查找进程pgrep -f "python3 myapp.py"# 终止进程pkill -f "python3 myapp.py"

10.5 注意事项

  1. 1. BSD vs System V: 同一系统上混用可能无效
  2. 2. 输出截断: 默认命令行可能截断,使用commargs控制
  3. 3. 权限限制: 普通用户只能查看自己的进程
  4. 4. 僵尸进程: 无法kill,需重启父进程
  5. 5. 时间格式: 超过24小时显示为DD-HH:MM:SS

十一、总结

ps命令虽简单但功能强大,核心记住以下几点:

  1. 1. 快速查看ps aux / ps -ef
  2. 2. 实时监控watch 'ps aux --sort=-%cpu'
  3. 3. 自定义输出ps -eo pid,ppid,cmd
  4. 4. 进程树ps -ef --forest
  5. 5. 脚本集成pgrep + ps -p

掌握这些技巧后,结合grepawkwatch等工具,可以构建强大的系统监控和诊断能力。对于持续监控,建议使用tophtop;对于历史分析,使用ps配合日志记录。

Shell编程中定向输入输出的详解

Shell编程中处理用户输入的详解指南

Shell编程中处理信号的详解

Shell编程中以后台模式运行脚本的详解

Shell编程作业控制详解

Shell编程中调整谦让度(Nice值)详解

Shell编程中set命令的使用详解

Linux中Zsh Shell详解:从入门到进阶

点分享

点收藏

点点赞

点在看

最新文章

随机文章