top介绍

top 命令是 Linux 下常用的系统资源占用查看及性能分析工具,能够实时显示系统中各个进程的资源(比如cpu、内存的使用)占用状况,top命令的执行结果是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。top命令基本上是各个版本的linux的自带命令,例如:CentOS,redhat,ubuntu等。

top格式

top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

top参数

d 指定每两次屏幕信息刷新之间的时间间隔(秒)。当然用户可以使用s交互命令来改变之。

p 通过指定监控进程ID来仅仅监控某个进程的状态。

q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

S 指定累计模式。

s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

i 使top不显示任何闲置或者僵死进程。

c 显示整个命令行而不只是显示命令名。

-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。

-p :指定某些个 PID 来进行观察监测而已。

在 top 执行过程当中可以使用的按键指令:

? :显示在 top 当中可以输入的按键指令;

P :以 CPU 的使用资源排序显示;

M :以 Memory 的使用资源排序显示;

N :以 PID 来排序喔!

T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。

k :给予某个 PID 一个讯号 (signal)

r :给予某个 PID 重新制订一个 nice 值。

执行结果解释

top

1.top行:

  1. 当前时间
  2. 系统已运行的时间
  3. 当前登录用户的数量
  4. 相应最近5、10和15分钟内的平均负载。

可以使用'l'命令切换uptime的显示。

21:45:11 — 当前系统时间
0 days, 4:54 — 系统已经运行了4小时54分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average:0.24, 0.15, 0.19 — load average后面的三个数分别是5分钟、10分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

2.tasks行:

Tasks — 任务(进程),系统现在共有22个进程,其中处于运行中的有1个,11个在休眠(sleep),stoped状态的有10个,zombie状态(僵尸)的有0个。

第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用't'切换显示

3.cpu行:

这里显示不同模式下所占cpu时间百分比,这些不同的cpu时间表示:

  • us, user: 运行(未调整优先级的) 用户进程的CPU时间
  • sy,system: 运行内核进程的CPU时间
  • ni,niced:运行已调整优先级的用户进程的CPU时间
  • wa,IO wait: 用于等待IO完成的CPU时间
  • hi:处理硬件中断的CPU时间
  • si: 处理软件中断的CPU时间
  • st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。

可以使用't'命令切换显示。

1.3% us — 用户空间占用CPU的百分比。
1.0% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
97.3% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.3% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比

在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了。

4.mem行:swap行:

接下来两行显示内存使用率,有点像'free'命令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。

物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间。

内存显示可以用'm'命令切换。

509248k total — 物理内存总量(509M)
495964k used — 使用中的内存总量(495M)
13284k free — 空闲内存总量(13M)
25364k buffers — 缓存的内存量 (25M)

swap交换分区
492536k total — 交换区总量(492M)
11856k used — 使用的交换区总量(11M)
480680k free — 空闲交换区总量(480M)
202224k cached — 缓冲的交换区总量(202M)

这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:

13284+25364+202224 = 240M。

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

详细行:

列名    含义

  1. PID    进程id
  2. PPID    父进程id
  3. RUSER    Realusername
  4. UID    进程所有者的用户id
  5. USER    进程所有者的用户名
  6. GROUP    进程所有者的组名
  7. TTY    启动进程的终端名。不是从终端启动的进程则显示为?
  8. PR       优先级
  9. NInice     值。负值表示高优先级,正值表示低优先级
  10. P        最后使用的CPU,仅在多CPU环境下有意义
  11. %CPU    上次更新到现在的CPU时间占用百分比
  12. TIME    进程使用的CPU时间总计,单位秒
  13. TIME+    进程使用的CPU时间总计,单位1/100秒
  14. %MEM    进程使用的物理内存百分比
  15. VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  16. SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
  17. RES    进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  18. CODE    可执行代码占用的物理内存大小,单位kb
  19. DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
  20. SHR    共享内存大小,单位kb
  21. nFLT    页面错误次数
  22. nDRT    最后一次写入到现在,被修改过的页面数。
  23. S    进程状态。
  24. D=    不可中断的睡眠状态
  25. R=    运行
  26. S=    睡眠
  27. T=    跟踪/停止
  28. Z=    僵尸进程
  29. COMMAND    命令名/命令行
  30. WCHAN    若该进程在睡眠,则显示睡眠中的系统函数名

使用技巧

1.多U多核CPU监控

在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:逻辑上有4个,实际中只有1个,参见上下图

f键,显示每个字段的解释,q键退出

2.高亮显示当前运行进程

敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下:

我们发现进程id为2419的“top”进程被加亮了,top进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。

3.进程字段排序

默认进入top时,各进程是按照CPU的占用量来排序的

敲击键盘“x”(打开/关闭排序列的加亮效果)

4.通过”shift + >”或”shift + <”可以向右或左改变排序列

按一次”shift + >”的效果图,视图现在已经按照%MEM来排序,再按一次按时间排

5.top交互命令

  1. h 显示帮助画面,给出一些简短的命令总结说明
  2. k 终止一个进程。
  3. i 忽略闲置和僵死进程。这是一个开关式命令。
  4. q 退出程序
  5. r 重新安排一个进程的优先级别
  6. S 切换到累计模式
  7. s 改变两次刷新之间的延迟时间(单位为s
  8. f或者F 从当前显示中添加或者删除项目
  9. o或者O 改变显示项目的顺序
  10. l 切换显示平均负载和启动时间信息
  11. m 切换显示内存信息
  12. t 切换显示进程和CPU状态信息
  13. c 切换显示命令名称和完整命令行
  14. M 根据驻留内存大小进行排序
  15. P 根据CPU使用百分比大小进行排序
  16. T 根据时间/累计时间进行排序
  17. W 将当前设置写入~/.toprc文件中

显示 完整命令

top -c

设置信息更新次数

1

top -n 2 【表示更新两次后终止更新显示】

设置信息更新时间

1

top -d 3 【表示更新周期为3秒】<br><br><br>【更多参考】<a id="homepage1_HomePageDays_DaysList_ctl00_DayList_TitleUrl_0" class="postTitle2"

linux-命令-procps-ng工具-top相关推荐

  1. linux top 命令可视化_12款最佳Linux命令行终端工具

    本文中,介绍了12款最佳Linux命令行终端工具,可以用来替代debian系的Linux原生终端.如果你每天需要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件, ...

  2. [转]12款最佳Linux命令行终端工具

    摘要 "工欲善其事必先利其器",作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是 ...

  3. 21款实用的Linux命令行终端工具

    本文中,介绍了14款最佳Linux命令行终端工具,可以用来替代debian系的Linux原生终端.如果你每天需要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件, ...

  4. linux 命令行 常用软件,12款最佳Linux命令行终端工具

    12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的终端软件 ...

  5. Linux命令速查工具

    在操作Linux的时候,经常会突然想不起来某个命令怎么写,今天在逛论坛的时候,发现一个大佬用易语言开发了个Linux命令快查助手.下载体验之后发现确实非常棒. 日常开发中用到的命令在这里都可以查到. ...

  6. linux命令行提示工具-fish

    linux命令行提示工具-fish 一个比较方便的 linux 命令行提示工具 fish 1.用下面的命令更新仓库: yum repolist yum update 2.然后用下面的命令安装 fish ...

  7. 21款最佳Linux命令行终端工具

    本文中,介绍了14款最佳Linux命令行终端工具,可以用来替代debian系的Linux原生终端.如果你每天需要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件, ...

  8. 离线调用linux命令,GitHub - rinetd/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...

    Linux Command 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他们家的数据linuxde.ne ...

  9. 实验楼linux命令,GitHub - encorechow/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...

    Linux Command 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他们家的数据linuxde.ne ...

  10. spark常用的linux命令,GitHub - Sparkinzy/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...

    Linux Command 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他们家的数据linuxde.ne ...

最新文章

  1. 微分方程 ode45() 求解并绘制曲线
  2. Spring学习笔记(二)——Spring相关配置属性注入Junit整合
  3. C语言-main方法的两个参数是干什么的?
  4. .Net/C# 实现: FlashFXP 地址簿中站点密码的加解密算法
  5. RNN代码解释pytorch
  6. python 用两个栈实现一个队列
  7. 怎么向easyui grid里面插入空数据_浅谈数据结算(三)
  8. 离散信号经过FFT处理后,幅度,相位,功率的计算
  9. Linux C : 进程管理实验:创建进程、上下文切换
  10. 处理数字_9_计算标准差
  11. webpack+vue+mui学习心得
  12. 2020年中国住宿业市场网络口碑报告
  13. elm预测matlab,机器学习——极限学习(ELM)matlab代码分析
  14. 数据库系统原理教程-作业
  15. Python3使用BFS实现湖北省到全国省级行政区
  16. codeblock图形界面编程
  17. 服务器系统事件id1001,WIN10事件查看器,ID1000,ID1001 問題
  18. 最好的关系,是彼此成就
  19. 移动vue大转盘抽奖
  20. 这100 个网络基础知识,看完成半个网络高手

热门文章

  1. 在代码的cmake时遇到Could NOT find Qt5Svg (missing: Qt5Svg_DIR)
  2. 高仿精仿安卓疯狂猜图游戏源码
  3. centos离线安装Chrome浏览器
  4. 64位计算机很慢,为什么我的电脑对安装程序的反应很慢每次点了
  5. 当html超出A4范围转pdf,前端实现html转pdf方法总结
  6. 云服务器没有架网站还能做啥?
  7. java 调用 finalize_java finalize方法总结、GC执行finalize的过程
  8. 6篇关于撒谎600字优秀作文,心田花开整理
  9. linux tty1 tty7,linux tty1-7理解
  10. 2008年南京夫子庙大型灯会