在Linux系统上,我们经常使用的命令之一是top。这主要用于显示系统中运行的所有进程和进程的资源使用情况等,所有用户都可以使用top命令。
top命令内容量丰富,可令使用者头疼的是无法全部看懂它的含义,要么就是不用使用,要么就是不太掌握使用技巧。鉴于此,特地来讲解一下top命令。基础篇——看懂top
这里我们列举一个top案例,以此案例来教大家如何看懂top。
top - 11:11:59 up 2:19, 3 users, load average: 0.04, 0.06, 0.05
Tasks: 237 total, 1 running, 235 sleeping, 0 stopped, 1 zombie
%Cpu(s): 0.7 us, 0.2 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863252 total, 64576 free, 1399920 used, 398756 buff/cache
KiB Swap: 2097148 total, 1720572 free, 376576 used. 117632 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8816 root 20 0 3633756 249440 55012 S 0.7 13.4 2:01.40 gnome-shell
6363 root 20 0 320332 2072 1660 S 0.3 0.1 0:18.19 vmtoolsd
6924 dmdba 39 19 2561364 187944 16 S 0.3 10.1 0:20.15 dmserver
7107 root 20 0 501060 157332 118028 S 0.3 8.4 0:41.72 X
10105 dmdba 20 0 3297352 414348 6284 S 0.3 22.2 1:08.05 java
1 root 20 0 191424 3392 1752 S 0.0 0.2 0:09.82 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.98 ksoftirqd/0
……
第一行:top
top - 11:11:59 up 2:19, 3 users, load average: 0.04, 0.06, 0.05
含义:
- 11:11:59——指系统的当前时间
up 2:19——指当前系统运行的时间2小时19分(未重启,连续运行时间)
3 users——当前系统有三个用户登录
load average: 0.04, 0.06, 0.05——指系统分别在1分钟、5分钟、15分钟内运行的负载情况。
——load average算法是每隔5秒检查活跃进程数,按特定算法算出,如果结果除以逻辑CPU结果高于5表名系统超负荷运转。
第二行:系统当前进程数情况
Tasks: 237 total, 1 running, 235 sleeping, 0 stopped, 1 zombie
含义:
237 total:进程数,共237个、1 running:1个运行中、235 sleeping:235个休眠进程、0 stopped:0个停止状态进程、1 zombie:1个僵尸进程。
第三行:当前CPU的运行情况
%Cpu(s): 0.7 us, 0.2 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
含义:
0.7 us:用户空间占用CPU的百分比
0.2 sy:内核空间占用CPU的百分比
0.0 ni:改变过优先级的进程占用CPU的百分比
99.2 id:空闲CPU百分比
0.0 wa: IO等待占用CPU的百分比
0.0 hi:硬中断(Hardware IRQ)占用CPU的百分比
0.0 si: 软中断(Software Interrupts)占用CPU的百分比
0.0 st:系统百分之多少等待得到真正的cpu资源。在正常情况下最好为0,表明得到了所有必要的cpu资源。如果这个值为50,表明cpu时有一半时间在等待。
第四行:内存状态 KiB Mem(单位k)
KiB Mem : 1863252 total, 64576 free, 1399920 used, 398756 buff/cache
含义:
1863252 total:物理内存总量1863252kb
64576 free: 空闲内存总量64576kb
1399920 used:使用中的内存总量1399920kb
398756 buff/cache: 缓存的内存量398756kb
第五行:swap交换分区 KiB Swap(单位k)
KiB Swap: 2097148 total, 1720572 free, 376576 used. 117632 avail Mem
2097148 total:交换区总量
1720572 free:空闲交换区总量
376576 used:使用的交换区总量
117632 avail Mem :可用的交换区总量
第六行:空行
top内部交互命令使用时,在此行显示
第七行以下:各进程(任务)的状态监控
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6924 dmdba 39 19 2561364 187944 16 S 0.3 10.1 0:20.15 dmserver
含义:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
进阶一:top命令参数用法
对于top命令的完整语法是:top [选项],而在我们日常使用过程中都是忽略选项的,下面来看看top命令的选项都有哪些。我们可以使用top -h查看命令帮助信息。
host bin]# top -h
procps-ng version 3.3.10
Usage:
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
top命令选项:
-b 以批处理模式操作
-c 显示完整的治命令
-d 屏幕刷新间隔时间
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置刷新间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
注意:请忽略多余的选项,help中实际的选项较少,是因为本文在麒麟操作系统中进行的演示。
案例:在top显示中只查看dmdba用户的进程情况,并且要求每10秒进行刷新。
命令:top - u dmdba -d 10
进阶二:top命令中的交互命令参数用法
进入top命令后,提供了一些交互命令,可以帮助我们更好的对top结果进行管理,涉及的交互命令如下:
h 显示快捷键帮助
k 终止一个进程
i 开/关忽略闲置和僵死进程
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 更改刷新间隔时间,单位秒
f,F 从当前显示中添加或者删除项目
o,O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据内存使用大小排序
P 根据CPU使用率进行排序 (默认排序)
T 根据时间/累计时间进行排序
w 将当前设置写入~/.toprc文件中
1 展开多核cpu显示
案例:进入top后查看多核cpu的运行情况。
进入top后,按下1键,此时看看到2个cpu都显示了各自的cpu运行情况。
更多实用技能敬请期待,收藏+关注才不会迷路哦[憨笑]