top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.

一.命令格式

top [参数]

二.命令功能

显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等

三.命令参数

参数 描述
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数

四. 使用实例

1.显示进程信息

命令:

top

输出:

[hc@localhost ~]$ top

top - 09:22:56 up 6 days,  1:40,  3 users,  load average: 0.22, 0.31, 0.71
Tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie
%Cpu(s): 10.6 us, 12.1 sy, 0.0 ni, 77.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3863568 total, 473100 free, 1651284 used, 1739184 buff/cache
KiB Swap: 3145724 total, 3120012 free, 25712 used. 1837920 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2676 hc 20 0 3627652 339496 22160 S 16.3 8.8 17:50.00 gnome-she+
689 polkitd 20 0 649880 17144 4636 S 10.3 0.4 678:56.95 polkitd
2051 root 20 0 358552 50640 6600 S 6.6 1.3 4:44.68 X
101038 hc 20 0 771640 27384 17392 S 2.7 0.7 0:01.21 gnome-ter+
721 dbus 20 0 61996 3708 1648 S 2.0 0.1 186:05.55 dbus-daem+
680 root 20 0 396404 3816 3124 S 1.7 0.1 154:18.42 accounts-+
86929 root 20 0 457956 51100 6944 S 1.3 1.3 15:59.97 uwsgi
113983 hc 20 0 161972 2400 1620 R 0.7 0.1 0:00.11 top
9 root 20 0 0 0 0 S 0.3 0.0 28:14.62 rcu_sched
405 root 20 0 0 0 0 S 0.3 0.0 7:43.36 xfsaild/d+
681 root 20 0 13216 600 572 S 0.3 0.0 0:31.09 rngd
1304 mongod 20 0 1025840 81704 4160 S 0.3 2.1 51:29.25 mongod
1869 mysql 20 0 1263256 112036 4784 S 0.3 2.9 10:32.82 mysqld
2909 hc 20 0 611472 7256 3592 S 0.3 0.2 54:46.85 gsd-accou+
30239 root 20 0 453640 54536 3420 S 0.3 1.4 12:21.71 celery
1 root 20 0 125804 3544 2120 S 0.0 0.1 0:16.95 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.44 kthreadd

说明:

统计信息区:

前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。

第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:

09:22:56 -- 当前系统时间

up 6 days, 1:40 -- 系统已经运行了6天1小时40分钟(在这期间系统没有重启过)

3 users -- 当前有2个用户登录系统

load average: 0.22, 0.31, 0.71 -- load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

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

第二行,Tasks — 任务(进程),具体信息说明如下:

系统现在共有231个进程,其中处于运行中的有1个,230个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行,cpu状态信息,具体属性说明如下

10.6 us -- 用户态占用CPU的百分比

12.1 sy -- 内核态占用CPU的百分比

0.0 ni -- 用做nice加权的进程分配的用户态cpu占用CPU的百分比

77.3 id -- 空闲的cpu百分比

0.0 wa -- cpu等待磁盘写入占用CPU的百分比

0.0 hi -- 硬中断(Hardware IRQ)占用CPU的百分比

0.0 si -- 软中断(Software Interrupts)占用CPU的百分比

0.0 st

备注:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!

第四行,内存状态,具体信息如下:

3863568 total -- 物理内存总量

473100 free -- 空闲内存总量

1651284 used -- 使用中的内存总量

1739184 buff/cache -- 缓存的内存量

第五行,swap交换分区信息,具体信息说明如下:

3145724 total -- 交换区总量

3120012 free -- 空闲交换区总量

25712 used -- 使用的交换区总量

1837920 avail Mem -- 表示可用于进程下一次分配的物理内存数量

备注:

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

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

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

第六行,空行

第七行以下各进程(任务)的状态监控,项目列信息说明如下:

列名 说明
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 进程名称(命令名/命令行)

2.显示完整命令

命令:

top -c

输出:

[hc@localhost ~]$ top -c

top - 10:01:50 up 6 days,  2:19,  3 users,  load average: 0.01, 0.04, 0.10
Tasks: 233 total, 1 running, 232 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.3 us, 10.8 sy, 0.0 ni, 83.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3863568 total, 451416 free, 1665668 used, 1746484 buff/cache
KiB Swap: 3145724 total, 3120012 free, 25712 used. 1823504 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
689 polkitd 20 0 649880 17144 4636 S 10.0 0.4 682:30.53 /usr/lib/polkit-1/polkitd --no-debug
2676 hc 20 0 3646940 359304 22308 S 6.0 9.3 18:02.04 /usr/bin/gnome-shell
2051 root 20 0 352052 44092 6600 S 3.3 1.1 4:50.20 /usr/bin/X :0 -background none -nor+
721 dbus 20 0 61996 3708 1648 S 2.3 0.1 187:04.96 /usr/bin/dbus-daemon --system --add+
680 root 20 0 396404 3816 3124 S 2.0 0.1 155:06.59 /usr/libexec/accounts-daemon
101038 hc 20 0 772056 27784 17528 S 1.3 0.7 0:03.61 /usr/libexec/gnome-terminal-server
86929 root 20 0 457956 51100 6944 S 1.0 1.3 16:30.76 /home/hc/project/envs/autoAweme/bin+
1869 mysql 20 0 1263256 112036 4784 S 0.7 2.9 10:35.24 /usr/libexec/mysqld --basedir=/usr +
2909 hc 20 0 611472 7256 3592 S 0.7 0.2 55:04.22 /usr/libexec/gsd-account
9 root 20 0 0 0 0 S 0.3 0.0 28:22.21 [rcu_sched]
405 root 20 0 0 0 0 S 0.3 0.0 7:45.11 [xfsaild/dm-0]
2641 hc 20 0 60172 2152 1580 S 0.3 0.1 0:00.27 /bin/dbus-daemon --config-file=/usr+
2889 hc 20 0 797116 12812 6428 S 0.3 0.3 4:06.38 /usr/libexec/gsd-color
71994 hc 20 0 162116 2504 1704 R 0.3 0.1 0:00.03 top -c
1 root 20 0 125804 3544 2120 S 0.0 0.1 0:16.97 /usr/lib/systemd/systemd --switched+
2 root 20 0 0 0 0 S 0.0 0.0 0:00.44 [kthreadd]
3 root 20 0 0 0 0 S 0.0 0.0 1:26.89 [ksoftirqd/0]

3.以批处理模式显示程序信息

命令:

top -b

4.以累积模式显示程序信息

命令:

top -S

5.设置信息更新次数

命令:

top -n 2

说明:

表示更新两次后终止更新显示

6.设置信息更新时间

命令:

top -d 3

说明:

表示更新周期为3秒

7.显示指定的进程信息

命令:

top -p 30568

输出:

[hc@localhost ~]$ top -p 30568

top - 10:04:42 up 6 days,  2:22,  3 users,  load average: 0.26, 0.09, 0.11
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 9.7 us, 12.3 sy, 0.0 ni, 77.9 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 3863568 total, 451040 free, 1665892 used, 1746636 buff/cache
KiB Swap: 3145724 total, 3120012 free, 25712 used. 1823304 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30568 root 20 0 310244 52392 3652 S 0.0 1.4 0:29.02 uwsgi

五. 其他使用技巧

1.多U多核CPU监控

在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:

输出:

top - 09:52:33 up 6 days,  2:10,  3 users,  load average: 0.00, 0.01, 0.11
Tasks: 233 total, 2 running, 230 sleeping, 0 stopped, 1 zombie
%Cpu0 : 2.7 us, 9.2 sy, 0.0 ni, 88.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 3.4 us, 10.3 sy, 0.0 ni, 86.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3863568 total, 458724 free, 1659276 used, 1745568 buff/cache
KiB Swap: 3145724 total, 3120012 free, 25712 used. 1829944 avail Mem

说明:

观察上图,服务器有2个逻辑CPU,实际上是1个物理CPU。再按数字键1,就会返回到top基本视图界面。

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

在top基本视图中,敲击键盘“b”(打开/关闭加亮效果)

可以通过敲击“y”键关闭或打开运行态进程的加亮效果。

3.进程字段排序

默认进入top时,各进程是按照CPU的占用量来排序的, 敲击键盘“x”(打开/关闭排序列的加亮效果)

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

5.top交互命令

在top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了s 选项, 其中一些命令可能会被屏蔽。

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

linux每日命令(37):top命令的更多相关文章

  1. Linux性能分析工具top命令详解

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析. top命令说明 [www.linuxidc.com@linuxidc-t-tomcat-1 ...

  2. Linux查看系统当前登录用户的命令,top命令看到users有多个用户登录

    Linux查看系统当前登录用户的命令,top命令看到users有多个用户登录 作为系统管理员,top命令看到users有多个用户登录,会需要查看下是否被黑客进入了. 实战例子:top命令:top - ...

  3. 每天一个linux命令:top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...

  4. linux常用命令:top 命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是 一个动态显示过程,即可以通过用户按键来不断刷 ...

  5. 为什么 Linux 的 htop 命令完胜 top 命令

    在 Linux 系统中,top 命令用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如 CPU 利用情况.内存消耗情况,以及每个进程情况等.但是,你知道吗?还有另外一个命令行工具 ...

  6. linux分析工具之top命令详解

    Linux系统可以通过top命令查看系统的CPU.内存.运行时间.交换分区.执行的线程等信息.通过top命令可以有效的发现系统的缺陷出在哪里.是内存不够.CPU处理能力不够.IO读写过高. 一.top ...

  7. 每天一个linux命令(34)--top命令

    今天给领导发邮件,我这边虽然显示发出去了,但是他那边一直没收到,结果我以为我发了,他又一直在那边等结果.所以说,以后要另外发个信息或者QQ微信之类的说一声. top命令是Linux 下常用的性能分析工 ...

  8. 【Linux命令】top命令

    一.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析. 二.使用 1.查看进程内线程情况 top -Hp 2556(2556为进程号)找 ...

  9. linux命令总结top命令

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...

  10. linux 操作系统级别监控 TOP命令

    Top命令是Linux下一个实时的.交互式的,对操作系统整体监控的命令,可以对CPU.内存.进程监控. 是Linux下最常用的监控命令. 第一行是任务队列信息 1 user 当前登录用户数load a ...

随机推荐

  1. 高效遍历匹配Json数据与双层for循环遍历Json数据

    工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...

  2. 2018即将过去,立个flag

    过去的2018 自己有没有值得有意义的地方呢? 没有, 自己有没有认识新的异性朋友呢? 没有, 自己都在忙啥呢? 敲代码,然后发现敲坏了一个键盘,换了HHKB,一个字舒服,还有就是通宵把一部电视剧看完 ...

  3. 使用OPCNetAPI连接OPCServer

    OPCServer KepServer; OPCGroup KepGroup; bool opc_connected; string remoteServerName = "KEPware. ...

  4. 深入理解 Array.prototype.map()

    深入理解 Array.prototype.map() map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果. 语法 let new_array = arr.map ...

  5. 汇合confluence

    Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki.使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息.文档协作.集体讨论,信息推送. 空间 空间是页面 ...

  6. POJ.2891.Strange Way to Express Integers(扩展CRT)

    题目链接 扩展中国剩余定理:1(直观的).2(详细证明). [Upd:]https://www.luogu.org/problemnew/solution/P4774 #include <cst ...

  7. 如何将Object类型转换成String类型

    1. Object.toString() obj.toString() 注意:必须保证Object不是null值,否则将抛出NullPointerException异常. 2. (String)Obj ...

  8. db2执行计划介绍

    在数据库调优过程中,SQL语句往往是导致性能问题的主要原因,而执行计划则是解释SQL语句执行过程的语言,只有充分读懂执行计划才能在数据库性能优化中做到游刃有余. 常见的关系型数据库中,虽然执行计划的表 ...

  9. iOS埋点统计

    链接: iOS无埋点数据SDK实践之路 iOS:无埋点数据SDK实践之路,看完能懂就厉害了 iOS埋点业务方案 ios 无码统计埋点 使用AOP实现iOS应用内的埋点计数 Aspects(AOP) A ...

  10. C/C++中的常量指针与指针常量(转)

    常量指针 常量指针是指向常量的指针,指针指向的内存地址的内容是不可修改的. 常量指针定义“const int *p=&a;”告诉编译器,*p是常量,不能将*p作为左值进行操作.但这里的指针p还 ...