ps
命令是 UNIX 和类 UNIX 操作系统中用于显示当前运行进程状态的重要命令。
-
基本用法:
ps
: 显示当前终端的进程ps aux
: 显示系统中所有进程的详细信息ps -ef
: 显示所有进程信息,包括命令行ps -u username
: 显示特定用户的进程
-
常用选项:
a
: 显示所有用户的进程u
: 显示详细的用户信息x
: 显示没有控制终端的进程f
: 显示进程树(父子关系)e
: 显示环境变量l
: 长格式输出w
: 宽输出
-
输出列说明:
- USER: 进程所有者
- PID: 进程 ID
- %CPU: CPU 使用率
- %MEM: 内存使用率
- VSZ: 虚拟内存大小
- RSS: 实际内存使用
- TTY: 终端类型
- STAT: 进程状态
- START: 启动时间
- TIME: CPU 时间
- COMMAND: 执行的命令
-
进程状态(STAT 列):
- R: 运行中
- S: 睡眠
- D: 不可中断的睡眠
- T: 停止
- Z: 僵尸进程
-
排序输出:
ps aux --sort=-%cpu
: 按 CPU 使用率降序排序ps aux --sort=-%mem
: 按内存使用率降序排序
-
与其他命令结合:
ps aux | grep <process_name>
: 查找特定进程ps aux | grep <pid>
: 查找特定进程号
-
显示线程信息:
1.ps -eLf
: 显示线程信息 -
线程信息解读:
输出格式通常如下:
UID PID PPID LWP C NLWP STIME TTY TIME CMD
各列的含义如下:
-
UID:用户 ID,显示进程所有者的用户 ID。
-
PID:进程 ID,每个进程的唯一标识符。
-
PPID:父进程 ID,启动这个进程的父进程的 PID。
-
LWP:轻量级进程 ID,也就是线程 ID。对于主线程,LWP 与 PID 相同。
-
C:CPU 利用率,表示进程使用 CPU 的百分比。
-
NLWP:线程数量,显示该进程包含的线程数。
-
STIME:进程启动时间。
-
TTY:与进程关联的终端设备。
-
TIME:进程使用的累计 CPU 时间。
-
CMD:启动进程的命令。
理解这个输出的关键点:
-
主进程和线程:
- 对于每个进程,会有一行 LWP 等于 PID 的输出,这代表主线程。
- 如果进程有多个线程,每个额外的线程会显示为一个单独的行,有相同的 PID 但不同的 LWP。