top 命令监控系统占用资源的状况

【功能说明】

top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各 个进程的资源占用状况。该命令可以按照CPU的使用、内存的使用和执行时间对系 统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。

【语法格式】

top [option]

top [选项]

。说明:

在top命令及后面的选项里,每个元素之间都至少要有一个空格。

【选项说明】 

参数选项

解释说明(带※的为重点)

-a

将进程按照使用内存排序

-b

以批处理的模式显示进程信息,输出结果可以传递给其他程序或写入 到文件中。在这种模式下,top命令不会接受任何输入,一直运行直到达   到-n选项设置的阈值,或者按Ctrl+C等组合键终止程序

-c

显示进程的整个命令路径,而不是只显示命令名称

-d

指定每两次屏幕信息刷新之间的时间间隔

-H

指定这个可以显示每个线程的情况,否则就是进程的总的状态

-i

不显示闲置或者僵死的进程信息

-n

top输出信息更新的次数,完成后将退出top命令

-P

显示指定的进程信息

交互式命令

交互式命令就是在top命令执行过程中使用的一些命令。表9-9针对交互式命令 进行了说明。

交互式命令

含 义

h或?

显示帮助信息,给出交互式命令的一些说明总结

Z

全局颜色设置

B

全局字体加粗设置

1

切换是否显示平均负载和启动时间信息

t

切换是否显示进程和CPU状态信息

m

切换是否显示内存信息

1

数字1,用于多核CPU监控,可监控每个逻辑CPU的状况

I

Irix/Solaris 模式

f

从当前显示列表中添加或删除项目。按“f‘键之后会显示列的列表,按“az” 键即可显示或隐藏对应的列,最后按回车键确定

0

改变top输出信息中显示项目的顺序。按小写的“az”键可以将相应的列向 右移动,而按大写的“AZ”键可以将相应的列向左移动,最后按回车键确定

FO

选择排序的列

<,>

移动选择排序的列,“v”选择左邻一列排序,“〉”选择右邻一列排序


 

(续)

交互式命令

含 义

R

切换正常/反转排序

H

切换是否显示线程信息

c

切换是否显示完整命令行和命令名称信息

i

切换是否显示闲置进程和僵死进程

S

切换到累计模式

X

以高亮的形式排序对应列,需要结合b/z使用

y

高亮运行的进程,需要结合b/z使用

z

打开/关闭颜色

b

打开/关闭加粗

u

显示指定用户相关的进程信息

n#

设置显示进程的最大行数

k

终止一个进程,系统将提示用户输入一个需要终止进程的PID

r

重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID,以及需   要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥 有更高的优先权。默认值是10

ds

改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是S如果是小数,则换算成ms如果输入0,那么系统输出将会不断刷新,默认刷 新时间是3s需要注意的是,如果设置太小的时间,则可能会引起系统不断刷新,   无法看清输出显示情况,而且系统负载也会加大

W

将当前top设置写入"/.toprc 文件中

q

退出top显示

使用范例

范例9-20 :显盘程信息。

[root@oldboy ~]# top #< = =使用top命令通常不接任何参数,若需要其他更 强大的功能则需要配合交互命令。
top - 02:39:54 up 1 day, 16:36, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 82 total, 1 running, 81 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
Mem: 486224k total, 401188k used, 85036k free, 42352k buffers 
Swap: 1535996k total, Ok used, 1535996k free, 216936k cached
PID USER PR NI VIRT RES SHRS%CPU %MEM TIME+ COMMAN
1 root200 19232 1588 1300 S 0.0 0.3 0:00.74 init
2 root20000OS0.00.00:00.00 kthreadd
3 rootRT000OS0.00.00:00.00 migration/0
4 root20000OS0.00.00:00.13 ksoftirqd/O

下面针对命令各行的内容进行说明。

第一行,任务队列信息,同叩time命令的执行结果。

02: 39: 54 当前系统时间。

•up 1 day, 16: 36 系统已经运行了 1天16小时36分。

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

, load average: 0. 00, 0. 00, 0. 00 load average后面的三个数分别是 1 分 钟、5分钟、15分钟的平均负载情况。

第二行,Tasks为任务(进程)。从上面的信息可以看出,系统现在共有82个 进程,其中处于运行状态的有1个,81个在休眠(sleep ) , stoped状态。个, zombie状态(僵死)的有0个。

第三行,CPU状态信息。

0. 0%us 用户空间占用CPU的百分比。

• 0. 0%sy 内核空间占用CPU的百分比。

• 0. 0%ni 改变过优先级的进程占用CPU的百分比。

100. 0%id 空闲CPU百分比。

0. 0%wa I/O等待占用CPU的百分比。

0. 0%hi 硬中断(Hardware IRQ)占用CPU的百分比。

0. 0%s i 软中断(Software I interrupts)占用CPU的百分比。

0. 0%st 虚拟机占用CPU的百分比。

第四行,内存状态。

486224k totaI 物理内存总量。

401188k used使用中的内存总量。

85036k free 空闲内存总量。

, 42352k buffers 缓冲的内存量。

第五行,swap交换分区信息。

・1535996k total 交换区总量。

Ok used 使用的交换区总量。

1535996k free 空闲交换区总量。

, 216936k cached 缓存的内存量。

OH )计算真正可用的内存数为:第四行的free+第四行的buffers+第五行的 cachedo

2)在对内存进行监控时,我们要时刻关注top命令里第五行swap交换分区的 used,如果这个数值还在不断地变化,则说明内核正在不断进行内存和swap的数据 交换,这表示内存真的不够用了或者程序运行有内存溢出问题。

第六行,空行。

从第七行开始,给出的是各进程(任务)的状态监控。

PID 进程 id。

USER进程所有者。

PR进程优先级。

Nl nice值,负值表示高优先级,正值表示低优先级。

VIRT进程使用的虚拟内存总量,单位为kb。

-RES进程使用的、未被换出的物理内存大小,单位为kb。

•SHR共享内存大小,单位为kb。

S 进程状态。D=不可中断的睡眠状态R=运行S=睡眠T=跟踪/停止Z=僵尸进 程。

・%CPU 上次更新到现在的CPU时间占用百分比。

• %MEM进程使用的物理内存百分比。 

•TIME+ 进程使用的CPU时间总计,单位1/100秒。

• COMMAND进程名称(命令名/命令行)。

范例9-21 :显示多核桐核CPU的信息。

在top基本视图中(如图9-2所示),按键盘数字,可监控每个逻辑CPU 的就兄。

image.png

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

下面虚拟机的系:

top -11:52:15 up 17:39, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 78 total, 1 running, 77 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 #v = =top基本视图界面显示为Cpu(s)。
Mem: 486224k total, 315868k used, 170356k free, 38960k buffers
Swap: 1535996k total Ok used, 1535996k free, 171356k cached 
虚拟机一个CPU也能看到,只是不明显
top - 11:52:27 up 17:39, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 78 total, 1 running, 77 sleeping, 0 stopped, 0 zombie
CpuO : 0.1%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0 %st #< = =按下数字键1,显示为CpuO。
Mem: 486224k total, 315868k used, 170356k free, 38960k buffers Swap: 1535996k total, 0k used, 1535996k free, 171356k cached
范例9-22 :将进程按照使用内存排序。
[root@oldboy ~]#top -a #< = =^^参数-a将进倒安照内梆E序。 top -12:06:10 up 17:53, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 84 total, 1 running, 83 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
Mem: 486224k total, 321636k used, 164588k free, 39072k buffers Swap: 1535996k total, 0k used, 1535996k free, 172136k cached
6010 root  20  0 98376 4244 3280 S 0.0 0.9 0:00.08 sshd
6039 root  20  0   185m 3360 2652 S 0.0 0.7 0:00.01 sudo
6195 root  20  0   185m 3360 2652 S 0.0 0.7 0:00.06 sudo
6665 root  20  0   185m 3360 2652 S 0.0 0.7 0:00.01 sudo
6041 root  20  0   160m 2180 1728 S 0.0 0.4 0:00.00 su

 范例9-23 :以批处理模式显示进程信息

[root@oldboy ~]#top -b #< ==使用参数七可以看到命令执行结果不停地向 下刷新。
20 0 105m 1776 1416 S 0.0 0.4 0:00.00 bash
20 0 185m 3360 2652 S 0.0 0.7 20 0 160m 2176 1728 S 0.0 0.4 0:00.00 su
20 0 105m 1956 1436 S 0.0 0.4 0:00.00 bash
20 0 0 0 0 S 0.0 0.0 0:00.00 flush-8:0 20 0 15016 1156 912 R 0.0 0.2 0:00.00 top
AC #< = =退出使用快捷键Ctrl+C。

范例9-24 :显示进程的完整路径。

[root@oldboy -]# top -c #< ==使用参数-c显示进程的整个命令路径,而不 是只显正命令名称。
top - 02:55:01 up 1 day, 16:51, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 78 total, 1 running, 77 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
Mem: 486224k total, 399916k used, 86308k free, 42388k buffers
Swap: 1535996k total, 0k used, 1535996k free, 216944k cached
PID USER PR NI VIRT RES SHRS%CPU %MEM TIME+ COMMA
ND 16232 mysql 20 0 760m 26m 6028 S 0.3 5.6 0:13.13 /application/ mysql-5.5.32/bin/mysqld —defaults- 
1root
2root
3root
4root
20 0 19232 1588 1300 S 0.0 0.3 0:00.74 /sbin/init
20 0
RT
20 0
0 0 0 S 0.0 0.0 0:00.00 [kthreadd]
0 S 0.0 0.0
0:00.00 [migration/0]
0 0 0 S 0.0 0.0 0:00.14 [ksoftirqd/O]

范例9-25 :设置执枝op命令后的信息刷新时间。

[root@oldboy~]#top-d 3#< ==使用参数-d指定更新周期为3秒,也就是说 命令结果每隔3s刷新一次。

范例9-26 :设置执彳ftop命令后的信息刷新烦

[root@oldboy -]# top -n 2 #< ==使用参数-n指定更新次数为2次,也就是 说命令结果刷新两次后终止退出,-n参数可以和-d参数配合使用。

范例9-27 :显示指定的进程信息。

[root@oldboy -]# top -p 15456 #< = =使用-p选项接上指定的进程号,就可 IUR显示这个进程的信息了。
top - 02:51:33 up 1 day, 16:48, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.9%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0 %st
Mem: 486224k total, 400040k used, 86184k free, 42376k buffers Swap: 1535996k total, 0k used, 1535996k free, 216940k cached
PID USER PR NI VIRT RES SHRS%CPU %MEM TIME+ COMMA ND
15456 mysql 20 0 760m 27m 6440 S 0.0 5.8 0:15.72 mysqld

范例9-28 :字段排序(交互模式)例子。

默认进入top命令时,各进程是按照CPU的使用量来排序的。

场景1 :敲击键盘"b”和”x”,得到图9-3。 

top - 19:06:13 up 7:48,2 users, load average: 0. 00, 0. 00, 0. 00
Tasks: 74 total, 1 running, 73 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
Mem:486640k total, 132572k used, 354068k free,25588k buffers
Swap: 1048572k total,0k used, 1048572k free,30524k cached
PIDUSERPRNIVIRTRESSHRs%CPU %MEMTIME+ COMMAND
1root2001923215121224s0. 00. 30:01.30 init
2root200000s0. 00. 00:00.00 kthreadd
3rootRT0000s0. 00.00:00.00 migration/0
4
K—root200
Q0
Q0
C0
Cs
―CL0. 00. 0

图9-3 敲击键盘"b"和“X”后的场景图

读者可以反复敲击,即可看出不同的显示。

场景2 :敲击键盘〃z”和〃x”,得到图9-4。

top -19:08:08 up 7:49,2 users,loadaverage: 0. 00,0. 00, 0. 00
7417300 zo
Cpu (sj0. 0%0. 0%0. 0%100. 0%0. 0%0. 0%0. 0%0. Of
Mcm •486640k132572k354068k25588k
11048572k0k1048572k30524k
PIDUSERPR NIVIRT RESSHRS %CPU %MEMTIME+ COMMAND
0. 0
0. 0
0. 0
0. 0

图9-4 敲击键盘“z”和“x”的场景图

敲击Z后,可以看到大部分内容都变成了红色,再敲X ,对列高亮显示。

场景3 :通过〃>”或可以向右或向左改变排序列,如图9-5所示。

top - 19:09:01 up 7:50,2 users, load average: 0.00, 0. 00, 0. 00
Tasks: 74 total, 1 running, 73 sleeping, 0 stopped, 0 zombie
Cpu (s) : 0. 8%us,0. 0%sy, 0. 0%ni, 99. 2%id,0. 0%wa,0. 0%hi,0. 0%si,
0. 0%st
Mem:486640k total, 132572k used, 354068k free,25588k buffers
Swap: 1048572k total,0k used, 1048572k free,30524k cached
PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND
1998root20098. Im43963392S0. 00. 90::00. 41sshd
1945root20098. Im43923392S0. 00. 90::00. 52sshd
2000root200105m18121420S0. 00.40::00. 04bash
1947root200105m18001420S0. 00. 40::00. 00bash
1277root200249m17161116S0. 00. 40::00. 03 rsyslogd
1root2001923215121224S0. 00. 30::01. 30init
1309root200114m1248652S0. 00. 30::00.14crond

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称 夸夸
夸夸
还有吗!没看够!
表情代码图片

    暂无评论内容