Shell II 进程相关命令

什么是进程?

进程可以看作是操作系统对资源的基本调度单位,通过进程的调度机制,系统得以协调各项任务的执行。

进程的调用流程 → 通过父进程创建子进程创建新的堆栈结构 → 子进程加载自身需要的资源到堆栈中 → 堆栈中执行命令 → 执行到main函数返回或者进程异常退出

ps 查看进程指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
参数列表
-e 或 -A 显示所有进程
-f 完整格式
-u 指定用户进程
-x 无终端进程
-o 自定义输出字段
-C 指定程序进程

ps -ef 全部进程
ps aux 全部进程 BSD风格
ps -u 指定用户进程

ps aux | awk "NR<=2"
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.5 21500 11112 ? Ss Mar21 0:16 /usr/lib/systemd/systemd --system --deserialize 23

字段信息
USER : 用户名
PID : 进程号
%CPU : CPU占用率
%MEM : 内存使用率
VSZ : 虚拟内存大小
RSS : 实际占用内存
TTY : 无终端为 ?
START : 启动时间
TIME : 占用CPU的时间
CMD : 执行的命令
STAT : 进程状态

STAT状态 含义
R 正在运行
S 休眠中(可中断)
D 不可中断的休眠
T 停止(如 Ctrl+Z)
Z 僵尸进程
X 死亡状态

top 动态打印所有进程的性能指标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
top - 22:12:10 up 19 days,  8:24,  1 user,  load average: 0.00, 0.00, 0.00
# 22:12:10 → 当前系统时间。
# up 19 days, 8:24 → 系统已经运行了 19 天 8 小时 24 分钟。
# 1 user → 当前登录系统的用户数。
# load average: 0.00, 0.00, 0.00 → 系统平均负载:
# 分别表示过去 1 分钟、5 分钟、15 分钟的平均负载(任务队列长度)。等待执行的任务个数

Tasks: 111 total, 1 running, 110 sleeping, 0 stopped, 0 zombie
# 111 total → 当前系统总共的进程数。
# 1 running → 正在运行的进程(状态是 R)。
# 110 sleeping → 休眠状态的进程(大多数进程处于这个状态)。
# 0 stopped → 被终止或挂起(T)的进程数。
# 0 zombie → 僵尸进程数,应该为 0,非 0 可能代表父进程没处理子进程退出状态。
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.2 hi, 0.2 si, 0.0 st
# us 用户态(user)进程占用 CPU 百分比(不包括 nice)
# sy 内核态(system)进程占用 CPU 百分比
# ni 用户进程 nice 优先级调整后占用的 CPU 百分比
# id 空闲(idle)CPU 百分比(越高越空闲)
# wa 等待 I/O 的时间占比(例如磁盘慢时)
# hi 硬中断(hardware IRQ)占用
# si 软中断(software IRQ)占用
# st 被虚拟机偷走的 CPU(steal time)
MiB Mem : 1871.0 total, 761.0 free, 498.8 used, 770.9 buff/cache
# total 总内存
# free 未使用的内存
# used 实际已用的内存(不包括 cache/buffer)
# buff/cache 系统缓存和缓冲使用的内存(可回收)
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1372.2 avail Mem
# total 交换分区总量(你这里没有启用 swap)
# free 空闲的 swap 空间
# used 已用 swap 空间
# avail Mem 可用内存:包含 free + reclaimable cache,更真实地反映可用内存

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1239 root 20 0 222028 97448 7212 S 0.7 5.1 216:30.97 AliYunDunMonito

vmstat 查看系统内存,IO, CPU信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 778652 103472 686320 0 0 3 6 7 8 1 0 99 0 0

procs 进程
r 可运行进程数(run queue),表示 CPU 等待队列长度
b 正在等待 I/O 的进程数量(blocked)

memory 内存
swpd 使用的 swap 空间(单位 KB)
free 空闲物理内存
buff 用作 buffer 的内存(主要缓存块设备元数据)
cache 用作 cache 的内存(主要缓存文件内容)

swap 交换
si 从 swap 中读入的数据量(KB/s)
so 写入 swap 的数据量(KB/s)

io 磁盘读写
bi 从块设备读入数据的速率(block in,KB/s)
bo 写到块设备的数据速率(block out,KB/s)

system 系统级操作
in 每秒中断次数(包括硬件中断 + 软件中断)
cs 每秒上下文切换次数(context switch)

cpu cpu时间百分比
us 用户态 CPU 使用百分比
sy 内核态 CPU 使用百分比
id 空闲时间百分比
wa 等待 I/O 百分比(高说明 I/O 慢)
st 被虚拟机“偷走”的 CPU 时间(只在虚拟化环境中有用)

pidstat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pidstat -p 1239 1 1
查询 进程号1239的信息
Linux 5.10.134-18.al8.x86_64 (iZbp19tqlmjz1dmnm8w43uZ) 04/09/2025 _x86_64_ (2 CPU)

10:56:06 PM UID PID %usr %system %guest %wait %CPU CPU Command
10:56:07 PM 0 1239 0.99 0.00 0.00 0.00 0.99 1 AliYunDunMonito

UID 拥有该进程的用户 ID
PID 进程 ID
%usr 用户态 CPU 使用百分比
%system 内核态 CPU 使用百分比
%CPU 总 CPU 占用(usr + system)
CPU 运行该进程的 CPU 核心编号
Command 可执行文件名(进程名)


Shell II 进程相关命令
http://gadoid.io/2025/04/09/进程相关命令/
作者
Codfish
发布于
2025年4月9日
许可协议