简介

ps(process status)命令是Linux系统中最基本也是最常用的进程查看命令,用于报告当前系统的进程状态。通过ps命令可以查看进程的详细信息,包括进程ID、CPU占用率、内存使用量等。

主要功能:
  • 查看系统中所有进程
  • 监控进程状态
  • 分析进程资源使用
  • 识别进程关系
  • 排查系统问题

基本用法

常用选项

选项 说明 示例
-e 显示所有进程 ps -e
-f 显示完整格式 ps -f
-u 按用户筛选 ps -u root
aux 显示所有用户的所有进程 ps aux
-C 按命令名筛选 ps -C nginx

输出字段说明

字段 含义
PID 进程ID
%CPU CPU使用率
%MEM 内存使用率
VSZ 虚拟内存大小
RSS 实际内存使用
TTY 终端名称
STAT 进程状态
START 启动时间
TIME 累计CPU时间
COMMAND 命令名称

进程监控

常见进程状态

状态 说明
R (Running) 正在运行或在运行队列中等待
S (Sleep) 中断休眠中,等待某个事件、信号
D (Disk Sleep) 不可中断的休眠状态
Z (Zombie) 僵尸进程
T (Traced) 被跟踪或被停止

进程监控示例

查看所有Java进程:

ps -ef | grep java

按CPU使用率排序:

ps aux --sort=-%cpu

按内存使用率排序:

ps aux --sort=-%mem

性能分析

资源使用分析

查看进程树:

ps -ejH

显示线程信息:

ps -eLf

查看进程的详细信息:

ps -p PID -o pid,ppid,cmd,%cpu,%mem,rss
性能分析要点:
  • 关注CPU和内存使用率
  • 检查进程状态
  • 分析进程关系
  • 监控资源趋势

实用案例

系统监控脚本

#!/bin/bash
# 监控高CPU使用率的进程
ps aux | awk '$3 > 50.0 {print $0}'

# 监控高内存使用率的进程
ps aux | awk '$4 > 20.0 {print $0}'

# 查找僵尸进程
ps aux | awk '$8 ~ /Z/ {print $0}'

常见问题排查

查找内存泄漏:

ps -eo pid,ppid,%mem,cmd --sort=-%mem | head

检查进程数量:

ps -ef | wc -l

最佳实践

使用建议

  • 定期检查系统进程状态
  • 建立资源使用基线
  • 及时清理僵尸进程
  • 关注异常进程行为
注意事项:
  • 频繁执行ps可能影响系统性能
  • 注意区分CPU时间和实际时间
  • 合理使用过滤和排序
  • 关注进程的父子关系