在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运行情况。
更多实用技能敬请期待,收藏+关注才不会迷路哦[憨笑]