Linux 学习笔记--进程管理
进程管理
top
top 工具是我们常用的一个查看工具,能实时的查看我们系统的一些关键信息的变化:
我们看到 top 显示的第一排,
内容 | 解释 |
---|---|
top | 表示当前程序的名称 |
21:37:35 | 表示当前的系统的时间 |
up 141 days,17:23 | 表示该机器已经启动了多长时间 |
1 user | 表示当前系统中只有一个用户 |
load average: 1.40,1.37,1.32 | 分别对应 1、5、15 分钟内 cpu 的平均负载 |
我们该如何看待这个 load average 数据呢?
假设我们的系统是单 CPU、单内核的,把它比喻成是一条单向的桥,把 CPU 任务比作汽车。
- load = 0 的时候意味着cpu 没有任何任务;
- load < 1 的时候意味着,cpu 的任务并不多,资源还很充足;
- load = 1 的时候就意味着cpu 的已经在全力工作了,所有的资源都被用完了,当然还好,这还在能力范围之内,只是有点慢而已;
- load > 1 的时候就意味着cpu 已经在全力工作,系统资源的用完了,但是还是有大量的进程在请求,在等待。若是这个值大于2、大于3,表示进程请求超过 CPU 工作能力的 2 到 3 倍。而若是这个值 > 5 说明系统已经在超负荷运作了。
top 的第二行数据,基本上第二行是进程的一个情况统计
内容 | 解释 |
---|---|
Tasks: 26 total | 进程总数 |
1 running | 1 个正在运行的进程数 |
25 sleeping | 25 个睡眠的进程数 |
0 stopped | 没有停止的进程数 |
0 zombie | 没有僵尸进程数 |
top 的第三行数据,这一行基本上是 CPU 的一个使用情况的统计了
内容 | 解释 |
---|---|
Cpu(s):31.8%us | 用户空间进程占用 CPU 百分比 |
1.0%sy | 内核空间运行占用 CPU 百分比 |
0.0%ni | 用户进程空间内改变过优先级的进程占用 CPU 百分比 |
66.3%id | 空闲 CPU 百分比 |
0.3%wa | 等待输入输出的 CPU 时间百分比 |
0.0%hi | 硬中断(Hardware IRQ)占用 CPU 的百分比 |
0.6%si | 软中断(Software IRQ)占用 CPU 的百分比 |
0.0%st | (Steal time) 是 hypervisor 等虚拟服务中,虚拟 CPU 等待实际 CPU 的时间的百分比 |
top 的第四行数据,这一行基本上是内存的一个使用情况的统计
内容 | 解释 |
---|---|
16425212 total | 物理内存总量 |
4906792 used | 使用的物理内存总量 |
705016 free | 空闲内存总量 |
10813404 buffers | 用作内核缓存的内存量 |
系统中可用的物理内存最大值并不是 free 这个单一的值,而是 free + buffers + swap 中的 cached 的和
top 的第五行数据,这一行基本上是交换区的一个使用情况的统计
内容 | 解释 |
---|---|
total | 交换区总量 |
used | 使用的交换区总量 |
free | 空闲交换区总量 |
cached | 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖 |
再下面就是进程的一个情况了
列名 | 解释 |
---|---|
PID | 进程 id |
USER | 该进程的所属用户 |
PR | 该进程执行的优先级 priority 值 |
NI | 该进程的 nice 值 |
VIRT | 该进程任务所使用的虚拟内存的总数 |
RES | 该进程所使用的物理内存数,也称之为驻留内存数 |
SHR | 该进程共享内存的大小 |
S | 该进程进程的状态: S=sleep R=running Z=zombie |
%CPU | 该进程 CPU 的利用率 |
%MEM | 该进程内存的利用率 |
TIME+ | 该进程活跃的总时间 |
COMMAND | 该进程运行的名字 |
top的常用交互命令
常用交互命令 | 解释 |
---|---|
q | 退出程序 |
I | 切换显示平均负载和启动时间的信息 |
P | 根据 CPU 使用百分比大小进行排序 |
M | 根据驻留内存大小进行排序 |
i | 忽略闲置和僵死的进程,这是一个开关式命令 |
k | 终止一个进程,系统提示输入 PID 及发送的信号值。一般终止进程用 15 信号,不能正常结束则使用 9 信号。安全模式下该命令被屏蔽。 |
pstree
通过 pstree 可以很直接的看到相同的进程数量,最主要的还是我们可以看到所有进程之间的相关性。
$ pstree -up
#参数选择:
#-A :各程序树之间以 ASCII 字元來連接;
#-p :同时列出每个 process 的 PID;
#-u :同时列出每个 process 的所屬账户名称。
ps
ps 也是我们最常用的查看进程的工具
参数 | 解释 |
---|---|
-a | 显示所有终端机下执行的进程,除了阶段作业领导者之外。 |
a | 显示现行终端机下的所有进程,包括其他用户的进程。 |
-A | 显示所有进程。 |
-c | 显示CLS和PRI栏位。 |
c | 列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。 |
-C<指令名称> | 指定执行指令的名称,并列出该指令的进程的状况。 |
-d | 显示所有进程,但不包括阶段作业领导者的进程。 |
-e | 此参数的效果和指定”A”参数相同。 |
e | 列出进程时,显示每个进程所使用的环境变量。 |
-f | 显示UID,PPIP,C与STIME栏位。 |
f | 用ASCII字符显示树状结构,表达进程间的相互关系。 |
-g<群组名称> | 此参数的效果和指定”-G”参数相同,当亦能使用阶段作业领导者的名称来指定。 |
g | 显示现行终端机下的所有进程,包括群组领导者的进程。 |
-G<群组识别码> | 列出属于该群组的进程的状况,也可使用群组名称来指定。 |
h | 不显示标题列。 |
-H | 显示树状结构,表示进程间的相互关系。 |
-j或j | 采用工作控制的格式显示进程状况。 |
-l或l | 采用详细的格式来显示进程状况。 |
L | 列出栏位的相关信息。 |
-m或m | 显示所有的执行绪。 |
n | 以数字来表示USER和WCHAN栏位。 |
-N | 显示所有的进程,除了执行ps指令终端机下的进程之外。 |
-p<进程识别码> | 指定进程识别码,并列出该进程的状况。 |
p<进程识别码> | 此参数的效果和指定”-p”参数相同,只在列表格式方面稍有差异。 |
r | 只列出现行终端机正在执行中的进程。 |
-s<阶段作业> | 指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。 |
s | 采用进程信号的格式显示进程状况。 |
S | 列出进程时,包括已中断的子进程资料。 |
-t<终端机编号> | 指定终端机编号,并列出属于该终端机的进程的状况。 |
t<终端机编号> | 此参数的效果和指定”-t”参数相同,只在列表格式方面稍有差异。 |
-T | 显示现行终端机下的所有进程。 |
-u<用户识别码> | 此参数的效果和指定”-U”参数相同。 |
u | 以用户为主的格式来显示进程状况。 |
-U<用户识别码> | 列出属于该用户的进程的状况,也可使用用户名称来指定。 |
U<用户名称> | 列出属于该用户的进程的状况。 |
v | 采用虚拟内存的格式显示进程状况。 |
-V或V | 显示版本信息。 |
-w或w | 采用宽阔的格式来显示进程状况。 |
x | 显示所有进程,不以终端机来区分。 |
X | 采用旧式的Linux |
-y | 配合参数”-l”使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。 |
常用参数组合
$ ps aux
$ ps axjf
内容解释
内容 | 解释 |
---|---|
F | 进程的标志(process flags),当 flags 值为 1 则表示此子程序只是 fork 但没有执行 exec,为 4 表示此程序使用超级管理员 root 权限 |
USER | 进程的拥有用户 |
PID | 进程的 ID |
PPID | 其父进程的 PID |
SID | session 的 ID |
TPGID | 前台进程组的 ID |
%CPU | 进程占用的 CPU 百分比 |
%MEM | 占用内存的百分比 |
NI | 进程的 NICE 值 |
VSZ | 进程使用虚拟内存大小 |
RSS | 驻留内存中页的大小 |
TTY | 终端 ID |
S or STAT | 进程状态 |
WCHAN | 正在等待的进程资源 |
START | 启动进程的时间 |
TIME | 进程消耗 CPU 的时间 |
COMMAND | 命令的名称和参数 |
状态 | 解释 |
---|---|
R | Running.运行中 |
S | Interruptible Sleep.等待调用 |
D | Uninterruptible Sleep.不可中断睡眠 |
T | Stoped.暂停或者跟踪状态 |
X | Dead.即将被撤销 |
Z | Zombie.僵尸进程 |
W | Paging.内存交换 |
N | 优先级低的进程 |
< | 优先级高的进程 |
s | 进程的领导者 |
L | 锁定状态 |
l | 多线程状态 |
+ | 前台进程 |
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: