Top 命令
相对于 ps 是撷取一个时间点的进程状态, top 则可以持续侦测进程运作的状态!
使用方式如下:
1
top [-d number] | top [-bnp]
Top display
1
2
3
4
5
6
7
8
top - 10:19:24 up 2 days, 51 min, 1 user, load average: 0.94, 1.27, 1.51
Tasks: 522 total, 2 running, 516 sleeping, 0 stopped, 4 zombie
%Cpu(s): 1.5 us, 1.3 sy, 0.0 ni, 97.2 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15712.7 total, 2095.5 free, 7352.8 used, 6264.4 buff/cache
MiB Swap: 16212.0 total, 12832.0 free, 3380.0 used. 7293.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5859 root 20 0 24.7g 118504 76836 S 0.7 0.7 50:51.04 Xorg
top 主要分为两个画面,上面的画面为整个系统的资源使用状态,基本上总共有六行,
SUMMARY Display
显示的内容依序是:
第一行(top…):这一行显示的信息分别为:
- 目前的时间,亦即是 10:19:24 那个项目;
- 开机到目前为止所经过的时间,亦即是 up 2 days, 那个项目;
- 已经登入系统的用户人数,亦即是 1 users, 项目;
- 系统在 1, 5, 15 分钟的平均工作负载。我们在第十五章谈到的 batch 工作方式为负载小于 0.8 就是这个负载啰!代表的是 1, 5, 15 分钟,系统平均要负责运作几个进程(工作)的意思。 越小代表系统越闲置,若高于 1 得要注意你的系统进程是否太过繁复了!
第二行(Tasks…):显示的是目前进程的总量与个别进程在什么状态(running, sleeping, stopped, zombie)。 比较
需要注意的是最后的 zombie 那个数值,如果不是 0 !好好看看到底是那个 process 变成僵尸了吧?
第三行(%Cpus…):显示的是 CPU 的整体负载,每个项目可使用 ? 查阅。需要特别注意的是 wa 项目,那
个项目代表的是 I/O wait, 通常你的系统会变慢都是 I/O 产生的问题比较大!因此这里得要注意这个项目
耗用 CPU 的资源喔! 另外,如果是多核心的设备,可以按下数字键『1』来切换成不同 CPU 的负载率。比如如下这样子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
top - 10:23:22 up 2 days, 55 min, 1 user, load average: 1.03, 1.26, 1.46
Tasks: 521 total, 1 running, 516 sleeping, 0 stopped, 4 zombie
%Cpu0 : 2.0 us, 6.6 sy, 0.0 ni, 91.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.7 us, 1.3 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 2.0 us, 0.0 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 1.3 us, 0.7 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.7 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.7 us, 0.0 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st
%Cpu6 : 0.0 us, 0.6 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.7 us, 1.3 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu8 : 0.7 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu9 : 1.3 us, 0.0 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu10 : 2.6 us, 1.3 sy, 0.0 ni, 96.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu11 : 0.7 us, 0.0 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu12 : 0.7 us, 0.0 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu13 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu14 : 0.0 us, 1.3 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu15 : 0.6 us, 1.3 sy, 0.0 ni, 98.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15712.7 total, 2002.7 free, 7412.5 used, 6297.5 buff/cache
MiB Swap: 16212.0 total, 12832.7 free, 3379.2 used. 7270.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5859 root 20 0 24.7g 119956 78288 S 5.9 0.7 50:28.52 Xorg
第四行与第五行:表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。 再次重申,要注意的是 swap
的使用量要尽量的少!如果 swap 被用的很大量,表示系统的物理内存实在不足!
第六行:这个是当在 top 程序当中输入指令时,显示状态的地方。交互式命令的地方,交互的地方。
FIELDS / Columns
至于 top 下半部分的画面,则是每个 process 使用的资源情况。比较需要注意的是:
PID
每个 process 的 ID 啦!USER
该 process 所属的使用者;PR
Priority 的简写,进程的优先执行顺序,越小越早被执行;NI
Nice 的简写,与 Priority 有关,也是越小越早被执行;%CPU
CPU 的使用率;%MEM
内存的使用率;TIME+
CPU 使用时间的累加;
COMMAND-LINE Options
-d
后面可以接秒数,就是整个进程画面更新的秒数。预设是 3 秒;
-b
以批次的方式执行 top ,还有更多的参数可以使用喔!通常会搭配数据流重导向来将批次的结果输出成为文件。(Batch-mode operation)
-n
与 -b 搭配,意义是“需要进行几次 top 的输出结果”。使用方式如下:
1
2
# 将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt
top -b -n 2 > /tmp/top.txt
-p
指定某些个 PID 来进行观察监测而已。使用方式如下:
1
top -pN1 -pN2 ... or -pN1,N2,N3 ...
INTERACTIVE Commands
在 top 执行过程当中可以使用的按键指令:
Enter
or Space
刷新(Refresh-Display)
?
or h
帮助命令,显示在 top 当中可以输入的按键指令;(Press ‘h’ or ‘?’ for help with Windows)
P
以 CPU 的使用资源排序显示;
M
以 Memory 的使用资源排序显示;
N
以 PID 来排序喔!
T
由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k
给予某个 PID 一个讯号(signal)。默认排第一的程序
1
2
3
4
5
PID to signal/kill [default pid = 5859]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5859 root 20 0 24.7g 119956 78288 S 5.9 0.7 50:28.52 Xorg
# after type ENTER
Send pid 5859 signal [15/sigterm]
r
给予某个 PID 重新制订一个 nice 值(Renice-a-Task)。
d
重设一个画面刷新间隔秒数 (Change-Delay-Time-interval)
q
离开 top 软件的按键。(Quit)
Reference
- top - display Linux processes https://www.man7.org/linux/man-pages/man1/top.1.html
- 《鸟哥的 Linux 私房菜》