• 重要通知:网站内容不做更新,只对现有的进行扩展,新技术资料已转移到其它位置存储。

  • 通知:2021年3月21日将博客服务器迁移,感谢好友老刘提供的服务器!!!
    点击查看具体站点更新信息

  • 提示:站点启用不定时清理注册未登录的帐户,已登录过用户请无视!

  • 通知:2019年5月18日网站迎来一波大更新!!!

    点击查看具体站点更新信息

top命令动态显示系统资源占用情况

系统集成 盛行 8年前 (2014-05-18) 3210次浏览 已收录 0个评论 扫描二维码
文章目录
[隐藏]

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.图示

top命令动态显示系统资源占用情况

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(僵尸进程)、<(高优先级)、N(低优先级)、s(父进程)、(前台进程)
%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命令动态显示系统资源占用情况
喜欢 (1)
[使用支付宝扫码]
分享 (0)
盛行
关于作者:
企业应用技术爱好者,喜欢分享知识。如果文章中有错误,欢迎指正,谢谢。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址