找回密码
 立即注册
首页 业界区 业界 top命令详解

top命令详解

艺轫 昨天 23:36
介绍

top命令可以查看各个进程的cpu,内存等所占用的情况,在排查问题当中经常用到。
执行top命令后,默认会出现如下内容:
1.png

top命令输出了很多参数,真正的服务器负载情况我们要综合其他参数一起看,运行结果可以分为两部分:

  • 第一部分是前5行,是系统整体的统计信息;
  • 第二部分是第8行开始的进程信息,我们从上往下逐行依次进行说明。
系统整体的统计信息

第一行
  1. top - 00:30:15 up  2:46,  1 user,  load average: 0.00, 0.01, 0.05
  2. # top:当前时间。
  3. # up:机器运行了多长时间。
  4. # users:当前登录用户数。
  5. # load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
复制代码
这里具体需要关注的是load average三个数值。表示在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。三个数字分别代表了1分钟,5分钟,15分钟的统计值,这个数值的确能反应服务器的负载情况。
但是,这个数值高了也并不能直接代表这台机器的性能有问题,可能是因为正在进行CPU密集型的计算,也有可能是因为I/O问题导致运行队列堵了。所以,当我们看到这个数值飙升的时候,还得具体问题具体分析。
大家都知道,一个CPU在一个时间片里面只能运行一个进程,CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数,就基本没啥问题。
第二行
  1. Tasks:  84 total,   1 running,  83 sleeping,   0 stopped,   0 zombie
  2. # Tasks:当前有多少进程。
  3. # running:正在运行的进程数。
  4. # sleeping:正在休眠的进程数。
  5. # stopped:停止的进程数。
  6. # zombie:僵尸进程数。
复制代码
第三行
  1. %Cpu(s):  0.8 us,  0.5 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  2. # us:用户空间占CPU的百分比
  3. # sy:内核空间占CPU的百分比
  4. # ni:调整过nice值的进程消耗掉的CPU时间
  5. # id: 空闲CPU占用率。
  6. # wa: 等待输入输出的CPU时间百分比,一般这个值高代表磁盘io较大。
  7. # hi:硬中断占用百分比,硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)
  8. # si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)。
  9. # st:Steal Time(窃取时间) ,当系统运行在虚拟化环境(如虚拟机)中时,物理 CPU 资源被同一物理机上的其他虚拟机占用,导致当前虚拟机无法使用 CPU 的时间比例。
复制代码
第四行
  1. KiB Mem :  1798504 total,   510160 free,   169572 used,  1118772 buff/cache
  2. # total:物理内存总量。
  3. # free:空闲内存量。
  4. # used:使用的内存量。
  5. # buffer/cache:用作内核缓存的内存量。
复制代码
第五行
  1. KiB Swap:        0 total,        0 free,        0 used.  1461408 avail Mem
  2. # total:交换区内存总量。
  3. # free:空闲交换区总量。
  4. # used:使用的交换区总量。
  5. # buffer/cache:缓冲的交换区总量。
复制代码
进程信息
  1.   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  2. 1624 root      20   0  157612  18204  12096 S   2.0  1.0   3:44.32 AliYunDunMonito
  3. 1603 root      20   0  148488  40856   7196 S   0.7  2.3   1:27.12 AliYunDun
  4.     1 root      20   0  125632   4072   2620 S   0.0  0.2   0:01.36 systemd
  5.     2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd
  6.     3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0
  7.     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
  8. # PID: 进程id
  9. # USER: 进程所有者的用户名
  10. # PR: 优先级
  11. # NI: nice值,负值表示高优先级,正值表示低优先级
  12. # VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  13. # RES: 代表进程实际使用的物理内存(未被换出到磁盘),单位kb。
  14. # SHR: 共享内存大小,单位kb
  15. # S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  16. # %CPU: 上次更新到现在的CPU时间占用百分比
  17. # %MEM: 进程使用的物理内存百分比
  18. # TIME+: 进程使用的CPU时间总计,单位1/100秒
  19. # COMMAND: 命令名/命令行
复制代码
top常用参数
  1. -d: 指定刷新的时间,如希望每秒刷新一次,则使用:top -d 1
  2. -p: 通过指定PID来仅仅监控某个进程的状态
  3. -S: 指定累计模式
  4. -s: 使top命令在安全模式中运行,这将除去交互命令所带来的潜在危险
  5. -H: 输出某个特定进程<pid>并检查该进程内运行的线程状况:top -H -p <pid>
复制代码
top交互命令使用

通过按f键可以编辑显示内容,按f键后,会出现下图
2.png


  • 当前是按照%CPU这一列来排序的。
  • 可以通过上、下键来选择。
  • 按右键可以选择整个列,然后按上、下键来移动整个列的显示位置,前移或后移,按回车确定。
  • 按空格键来显示或隐藏该列,带的是显示,不带的是不显示。
  • 按s键可以将当前列设置为排序列。
  • 按q键退出。
快捷键补充:

  • 敲top后,按键盘数字“1”可以监控每个逻辑CPU的状况
  • 敲top后,输入u,然后输入用户名,则可以查看相应的用户进程
  • 敲top后,top命令默认以K为单位显示内存大小,我们可以通过大写字母E来切换内存信息区域的显示单位,如下按一下E切换到MB,再按一下E切换到GB
  • 敲top后,输入h进入top命令的帮助文档,了解更多关于top的用法

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册