Linux ps 命令查看进程状态与资源占用

2次阅读

ps 是 linux 查看进程的核心命令,默认仅显示当前终端进程;常用 ps aux 查所有进程,支持按 cpu/内存排序、筛选特定进程及分析 stat 状态码。

Linux ps 命令查看进程状态与资源占用

ps 是 Linux 中最基础、最常用的进程查看命令,它能快速列出当前系统中运行的进程及其状态、资源使用情况等关键信息。默认情况下,ps 只显示当前终端相关的进程(即当前 shell 启动的进程),若要查看更全面的信息,需配合特定选项使用。

常用组合:ps aux 查看所有用户的所有进程

这是最实用的用法之一:

  • a:显示所有终端(包括其他用户的)进程
  • u:以用户友好的格式(含 CPU/内存占用、用户、启动时间等)显示
  • x:显示没有控制终端的进程(如后台服务、守护进程)

输出字段含义示例(部分):

  • USER:进程所属用户
  • %CPU:该进程占用的 CPU 百分比(采样周期内)
  • %MEM:该进程占用的物理内存百分比
  • RES:常驻内存大小(实际占用的物理内存,单位 KB)
  • TIME+:CPU 使用总时间(精确到百分之一秒)

按资源排序:快速定位高负载进程

结合 sort 可直观找出“吃资源”的进程:

  • 按 CPU 占用降序:ps aux --sort=-%cpu | head -10
  • 按内存占用降序:ps aux --sort=-%mem | head -10
  • 按运行时间升序(找最老的进程):ps aux --sort=start_time | head -5

注意:--sort 参数在较新版本的 procps(如 ubuntu 20.04+、centos 8+)中支持;旧系统可用 ps aux | sort -k3nr | head -10(以第3列 %CPU 排序)。

筛选特定进程:配合 grep 或 -C 选项

查找某个程序是否在运行,或只看某类进程:

  • nginx 进程:ps aux | grep nginx(注意会同时匹配到 grep 自身,可加 [n]ginx 规避)
  • 查指定用户的进程:ps -u www-data
  • 查指定命令名的进程(精确匹配):ps -C python3
  • 查进程树结构(显示父子关系):ps -ef --forestps auxf

理解 STAT 列中的常见状态码

进程状态是判断其健康与否的关键线索:

  • R:正在运行或可运行(runnable)
  • S:睡眠中(sleeping),等待事件(如 I/O、信号)
  • D:不可中断睡眠(uninterruptible sleep),通常在等待磁盘 I/O,kill 无效
  • Z:僵尸进程(zombie),子进程已终止但父进程未回收,需排查父进程逻辑
  • T:被停止(stopped)或被追踪(traced),如被调试器暂停
  • 附加符号如 (高优先级)、<code>N(低优先级)、+(前台进程组)也出现在 STAT 中

不复杂但容易忽略

text=ZqhQzanResources