linux下的命令ps
linux下的命令ps详细介绍
在 Linux 系统中,ps(Process Status)命令用于查看当前运行的进程状态,是监控和管理进程的重要工具。以下是关于 ps 命令的详细说明:
一、核心功能
- 显示当前进程的详细信息(PID、用户、CPU 占用、内存占用、状态、启动时间等)。
- 支持过滤特定进程(如按用户、进程名、PID 等筛选)。
- 配合其他命令(如
grep、kill)实现进程管理。
二、常用选项与风格
ps 命令的选项风格分为 BSD 风格(不带 -)和 System V 风格(带 -),常用选项组合如下:
1. BSD 风格(经典组合)
ps aux:显示所有用户的所有进程(包括无终端进程)。a:显示终端上的所有进程(包括其他用户)。u:以用户视角显示进程(包含用户名、启动时间等)。x:显示无控制终端的进程。
2. System V 风格(更详细的格式)
ps -ef:显示所有进程的完整格式信息(适合查看进程层级关系)。-e:等价于a+x,显示所有进程。-f:显示完整格式(Full Format),包含父进程 PID(PPID)、进程启动命令等。
3. 其他常用选项
-p <PID>:仅显示指定 PID 的进程(如ps -p 1234)。--pid <PID>:同上(更易读的长选项)。-o <列名>:自定义显示列(如ps -o pid,user,comm)。--no-headers:不显示表头(适合脚本输出)。
三、输出列含义(以 ps aux 为例)
| 列名 | 含义 |
|---|---|
| USER | 启动进程的用户名。 |
| PID | 进程 ID(唯一标识)。 |
| %CPU | 进程占用 CPU 百分比(累计值)。 |
| %MEM | 进程占用物理内存百分比。 |
| VSZ | 进程虚拟内存大小(KB)。 |
| RSS | 进程驻留内存大小(物理内存,KB)。 |
| TTY | 进程关联的终端(? 表示无终端,pts/0 表示伪终端)。 |
| STAT | 进程状态(关键!见下方说明)。 |
| START | 进程启动时间(时:分 或 日期)。 |
| TIME | 进程累计使用的 CPU 时间。 |
| COMMAND | 启动进程的命令(完整命令会被截断,ps -ef 显示更全)。 |
进程状态(STAT)常见标识
- R:运行中(Running,或等待运行)。
- S:睡眠(可中断,Sleeping,等待事件完成)。
- D:深度睡眠(不可中断,通常在等待 I/O,如磁盘操作)。
- Z:僵尸进程(Zombie,已终止但未被父进程回收,需处理)。
- T:停止(Stopped,被信号或调试器暂停)。
- <:高优先级进程(优先级值较低,Linux 中优先级范围 -20 ~ 19,值越小优先级越高)。
- N:低优先级进程(Nice 值调整后的低优先级)。
- s:会话领导进程(Session Leader,如终端启动的主进程)。
- l:多线程进程(包含子线程)。
四、实用示例
1. 查看所有进程(最常用)
bash
aux
2. 过滤特定进程
- 查找包含关键词
nginx的进程:bashaux nginx - 查找用户
admin的进程:bashadmin
3. 查看进程层级关系(父进程与子进程)
bash
sshd
4. 自定义显示列
bash
pid,user,%cpu,%mem,comm
5. 查看僵尸进程(状态为 Z)
bash
aux Z
五、注意事项
- 静态快照:
ps输出的是命令执行瞬间的进程状态,非实时监控。若需实时查看,用top或htop命令。 - 命令截断:
COMMAND列可能被截断,使用ps -ef或ps aux --cols 200(调整终端宽度)显示完整命令。 - 安全风险:显示所有进程(如
ps aux)可能包含其他用户的敏感信息,需注意权限。
六、总结
- 基础用法:
ps aux或ps -ef是查看进程的起点。 - 过滤技巧:结合
grep或-p精准定位目标进程。 - 状态分析:通过
STAT列判断进程是否异常(如僵尸进程Z)。
熟练掌握 ps 命令后,可高效排查进程相关问题(如 CPU 占用过高、内存泄漏等),是 Linux 系统管理的必备工具。