1.释义
top可以显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
2.系统帮助
Usage:
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
参数:
-b:批处理
-c:显示完整的命令
-I:忽略失效过程
-s:保密模式
-S:累积模式
-i: 设置间隔时间
-u: 指定用户名
-p: 指定进程
-d: 多长时间刷新一次,单位“秒”
-n: 循环显示的次数
按键:
h 查看帮助
l 显示或隐藏top行信息
t 以不同的方式显示CPU使用率或隐藏或显示Tasks行、%Cpu(s)行
m 以不同的方式显示内存使用率或隐藏或显示KiB Mem行、KiB Swap行
z 以彩色信息展示
n 设置显示进程的数量
s 设置刷新时间
b 高亮显示处于R(运行)状态的进程
1 显示所有核心CPU负载
N 按PID进程号从大到小排序
M 按内存使用百分比从大到小排序
P 按CPU使用百分比从大到小排序
R 对排序进行反转
f 自定义显示字段
k kill掉指定PID进程号
w 保存top环境设置~/.toprc
q 退出top
3.图示
4.图解
top - 00:54:34 up 67 days, 16:49, 1 user, load average: 0.00, 0.01, 0.05
top - 00:54:34:当前系统时间,零晨54分34秒
up 67 days, 16:49:运行时间,67天16小时49分钟
1 user:当前在线用户,1用户
load average: 0.00, 0.01, 0.05:当前平均负载情况:1分钟,5分钟,15分钟
说明:
平均负载表示的平均活跃进程数,包括正在running的进程数,准备running(就绪态)的进程数,和处于不可中断睡眠状态的进程数。如果平均负载数刚好等于CPU核数,那证明每个核都能得到很好的利用,如果平均负载数大于核数证明系统处于过载的状态,通常认为是超过核数的70%认为是严重过载,需要关注。还需结合1分钟平均负载,5分钟平均负载,15分钟平均负载看负载的趋势,如果1分钟负载比较高,5分钟和15分钟的平均负载都比较低,则说明是瞬间升高,需要观察。如果三个值都很高则需要关注下是否某个进程在疯狂消耗CPU或者有频繁的IO操作,也有可能是系统运行的进程太多,频繁的进程切换导致。
Tasks: 318 total, 1 running, 317 sleeping, 0 stopped, 0 zombie
Tasks: 318 total:当前进程数共计318个
1 running:当前正在运行的1个
317 sleeping:当前休眠317个
0 stopped:当前停止0个
0 zombie:当前僵尸0个
僵尸进程说明:
子进程结束时父进程没有调用wait()/waitpid()等待子进程结束,那么就会产生僵尸进程。原因是子进程结束时并没有真正退出,而是留下一个僵尸进程的数据结构在系统进程表中,等待父进程清理,如果父进程已经退出则会由init进程接替父进程进行处理(收尸)。由此可见,如果父进程不作为并且又不退出,就会有大量的僵尸进程,每个僵尸进程会占用进程表的一个位置(slot),如果僵尸进程太多会导致系统无法创建新的进程,因为进程表的容量是有限的。所以当zombie这个指标太大时需要引起我们的注意。下面的进程详细信息中的S列就代表进程的运行状态,Z表示该进程是僵尸进程。
处理方法:
1.找到僵尸进程的父进程pid(pstress可以显示进程父子关系),kill -9 pid,父进程退出后init自动会清理僵尸进程。(需要注意的是kill -9并不能杀死僵尸进程)
2.重启系统。
%Cpu(s): 0.6 us, 0.9 sy, 0.0 ni, 98.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s):总的Cpu使用,按“1”可显示每核使用情况
0.6 us:user 表示用户态的CPU时间比例
0.9 sy:system 表示内核态的CPU时间比例
0.0 ni:nice 表示运行低优先级进程的CPU时间比例
98.5 id:idle 表示空闲CPU时间比例
0.0 wa:iowait 表示处于I/O等待的CPU时间比例
0.0 hi:hard interrupt 表示处理硬中断的CPU时间比例
0.0 si:soft interrupt 表示处理软中断的CPU时间比例
0.0 st:steal 表示当前系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间比例
说明:
整体的CPU使用率=1-id。当us很高时,证明CPU时间主要消耗在用户代码,需要优化用户代码。sy很高时,说明CPU时间都消耗在内核,要么是频繁的系统调用,要么是频繁的CPU切换(进程切换/线程切换)。wa很高时,说明有进程在进程频繁的IO操作,有可能是磁盘IO,也有可能是网络IO。si很高时,说明CPU时间消耗在处理软中断,网络收发包会触发系统软中断,所以大量的网络小包会导致软中断的频繁触发,典型的SYN Floor会导致si很高。
KiB Mem : 1880024 total, 519252 free, 1142608 used, 218164 buff/cache
KiB Mem:物理内存(kb)
1880024 total:总的物理内存
519252 free:剩余内存
1142608 used:使用内存
218164 buff/cache:用于读写磁盘缓存的内存/用于读写文件缓存的内存
KiB Swap: 511996 total, 262704 free, 249292 used. 488484 avail Mem
KiB Swap:交换分区内存(kb)
511996 total:总的虚拟内存
262704 free:剩余虚拟内存
249292 used:使用虚拟内存
488484 avail Mem:可用内存
说明:
Swap原理是把一块磁盘空间或者一个本地文件当成内存来使用,如果三个值都为0表示系统关闭了swap功能,命令:swapoff -a(关闭),swapon -a(开启)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID:进程号
USER:进程启动的用户
PR:进程调度优先级
NI:进程nice值(优先级),越小的值代表越高的优先级
VIRT:进程使用的虚拟内存
RES:进程使用的物理内存(不包括共享内存)
SHR:进程使用的共享内存
S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU:进程使用的CPU占比
%MEM:进程使用的内存占比
TIME+:进程启动后到现在所用的全部CPU时间
COMMAND:进程的启动命令(默认只显示二进制,top -c能够显示命令行和启动参数)
5.示例
5.1.每5秒刷新一次
[root@itbkz ~]#top -d 5
5.2.指定进程号查看
[root@itbkz ~]#top -p 6552
top - 23:57:23 up 56 min, 2 users, load average: 0.00, 0.01, 0.04
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1880024 total, 1482800 free, 128372 used, 268852 buff/cache
KiB Swap: 511996 total, 511996 free, 0 used. 1498168 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6552 root 20 0 230408 5212 3296 S 0.0 0.3 0:00.32 httpd
5.3.指定间隔和进程号查看
[root@itbkz ~]#top -d 10 -p 6552
top - 23:58:59 up 57 min, 2 users, load average: 0.00, 0.01, 0.04
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1880024 total, 1482732 free, 128596 used, 268696 buff/cache
KiB Swap: 511996 total, 511996 free, 0 used. 1498100 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6552 root 20 0 230408 5212 3296 S 0.0 0.3 0:00.33 httpd
5.4.指定多个进程号查看
[root@itbkz s]#top -p 6553,6244
top - 14:59:44 up 15:58, 1 user, load average: 0.00, 0.06, 0.11
Tasks: 2 total, 0 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1880024 total, 1362440 free, 125936 used, 391648 buff/cache
KiB Swap: 511996 total, 511996 free, 0 used. 1497660 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6553 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd
6244 zabbix 20 0 81828 1272 464 S 0.0 0.1 0:00.00 zabbix_agentd
5.5.指定用户查看
[root@itbkz s]#top -u apache
top - 15:00:13 up 15:58, 1 user, load average: 0.00, 0.05, 0.10
Tasks: 264 total, 1 running, 263 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1880024 total, 1362592 free, 125964 used, 391468 buff/cache
KiB Swap: 511996 total, 511996 free, 0 used. 1497812 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6553 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd
6554 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd
6555 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd
6556 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd
6557 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd
IT博客站版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:top命令动态显示系统资源占用情况