TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。
top程序对运行的系统提供一个动态的实时的监控。它能够显示系统的总体信息和一些正被Linux内核管 理的任务。它所显示的系统总体信息的样式以及任务信息显示的样式,顺序和大小都是可以由用户配置,而且配置信息可以重启后永久生效。top能够对进程操作提供一个有限的交互式界面,对个性化配置提供更多扩展性的界面。
一. TOP前五行统计信息
统计信息区前五行是系统整体的统计信息。
1. 第一行是任务队列信息
同 uptime 命令的执行结果:
[root@localhost ~]# uptime
13:22:30 up 8 min, 4 users, load average: 0.14, 0.38, 0.25
其内容如下:
12:38:33 |
当前时间 |
up 50days |
系统运行时间,格式为时:分 |
1 user |
当前登录用户数 |
load average: 0.06, 0.60, 0.48 |
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
2. 第二、三行为进程和CPU的信息
当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 29 total |
进程总数 |
1 running |
正在运行的进程数 |
28 sleeping |
睡眠的进程数 |
0 stopped |
停止的进程数 |
0 zombie |
僵尸进程数 |
Cpu(s): 0.3% us |
用户空间占用CPU百分比 |
1.0% sy |
内核空间占用CPU百分比 |
0.0% ni |
用户进程空间内改变过优先级的进程占用CPU百分比 |
98.7% id |
空闲CPU百分比 |
0.0% wa |
等待输入输出的CPU时间百分比 |
0.0% hi |
|
0.0% si |
3. 第四五行为内存信息。
内容如下:
Mem: 191272k total |
物理内存总量 |
173656k used |
使用的物理内存总量 |
17616k free |
空闲内存总量 |
22052k buffers |
用作内核缓存的内存量 |
Swap: 192772k total |
交换区总量 |
0k used |
使用的交换区总量 |
192772k free |
空闲交换区总量 |
123988k cached |
缓冲的交换区总量。 内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。 |
二. 进程信息
列名 |
含义 |
PID |
进程id |
PPID |
父进程id |
RUSER |
Real user name |
UID |
进程所有者的用户id |
USER |
进程所有者的用户名 |
GROUP |
进程所有者的组名 |
TTY |
启动进程的终端名。不是从终端启动的进程则显示为 ? |
PR |
优先级 |
NI |
nice值。负值表示高优先级,正值表示低优先级 |
P |
最后使用的CPU(在SMP环境中),仅在多CPU环境下有意义,用一个数字代表最后一次使用的CUP. |
%CPU |
上次更新到现在的CPU时间占用百分比(当前任务共享从上次屏幕刷新时的CPU时间,以CPU总时间的百分比表示。在一个真实的SMP环境中,如果Irix Mode被设置成off,top将工作在Solaris Mode下,即一个任务的CPU利用率将以CPU的总数分开显示,要切换Irix/Solaris Mode,按“I"就行。) |
TIME |
进程使用的CPU时间总计,单位秒(当前任务从开始时使用的CPU时间总和,当Cumulative mode开启时,top将列出每个进程和它的死了的子进程使用的CPU时间。) |
TIME+ |
进程使用的CPU时间总计,单位1/100秒(显示到百分之一秒) |
%MEM |
进程使用的物理内存百分比(一个任务当前使用的可用的物理内存百分比) |
VIRT(Virt Image (kb)) |
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES(当期任务使用的总的虚拟内存。它包括所有的执行代码,数据,共享库,加上被置换出的页面和被映射但是没被使用的页面。) |
SWAP |
进程使用的虚拟内存中,被换出的大小,单位kb。(在一个任务中呈现的而没有驻留的内存。这种内存是已经被置换出但是可能包含另外的非驻留的内存。这个字段的值是从虚拟内存中减去物理内存所得的。) |
RES(Resident size |
进程使用的、未被换出的物理内存大小,一个任务使用的未被置换出的物理内存。单位kb。RES=CODE+DATA |
CODE(code size (kb)) |
可执行代码占用的物理内存大小,用于可执行代码的虚拟内存总额,单位kb |
DATA(Data+Stack size (kb)) |
可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb,用于除了可执行代码以为的虚拟内存总额 |
SHR(Shared Mem size (kb)) |
一个任务使用的共享内存总额。它反映了可以被其他进程共享的内存总额,单位kb |
nFLT(Page Fault count) |
页面错误次数(一个任务出现的主要的页面错误的数量。当一个进程试图对当前未出现在地址空间的虚拟内存进行读写操作时,这将产生一个页面错误。) |
nDRT(Dirty Pages count) |
最后一次写入到现在,被修改过的页面数。(从上一次被写入到磁盘且被修改的页面数量) |
S |
进程状态。 |
COMMAND |
命令名/命令行 |
WCHAN |
若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags |
任务标志,参考 sched.h |
2.1 用快捷键更改显示内容。
(1)更改显示内容通过 f键可以选择显示的内容。
按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
(2)按o键可以改变列的显示顺序。
按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
设置完按回车返回界面。
三. 命令使用
详细内容可以参考MAN 帮助文档。这里列举部分内容:
命令格式:
top [-] [d] [p] [q] [c] [C] [s][S][H][u] [n]
参数说明:
-d: 设置延迟时间。指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
-q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
-p通过指定监控进程ID来仅仅监控某个进程的状态, 监视指定PID的进程,可以以-p1 -p2 -p67 的格式最多输入20次,也可以以-p 1,2,3,4,5,6,7的格式最多跟20个PID。如果想恢复正常显示,即显示所有进程,不必终止或重启top。按住“=”就可以切换了。
-b 批处理模式操作
开启top工作在批处理模式,这样在需要将top的输出信息输出 到其他程序或文件时非常有用。在这种模式下,top不接受任何输入操作,直到通过-n 设置的重复次数后,或者退出top才终止。
在终端中输入top -b top将不断重复地显示任务信息,知道按Ctrl+C终止为止,在终端中输入top -b -n 10 ,top将显示10次后终止,也就是分10个批次显示完后就退出。
-c 命令行/程序名 开关,显示整个命令行而不只是显示命令名
设置屏幕刷新的延迟时间,如在命令行输入top -d 0.09 则屏幕将每隔0.09秒刷新。若原来的个人配置文件设置的是每隔3秒将不生效。延迟时间可以设置很小的数,但是不能是负数。
-H线程开关,在终端输入top -H后,top将以上一次系统记得的“H"状态的相反的状态运行。如上次top的H状态是off,则这次运行时H状态就变成on了,H状态是on时,所有的单独 的线程都会被显示出来,但是,top是显示一个进程的所有线程的总和。如下图,当把"H”设为off时,top显示的qemu-kvm只有两栏,把"H"设为on时,top显示的qemu-kvm有总共有四栏。
-i 空闲进程开关,使top不显示任何闲置或者僵死进程。以系统记得的“i”状态的相反状态启动top。当开关是off时,空闲的或僵死的任务将不被显示。
-n 设置重复次数,如设置top -n 5则top将屏幕刷新5次后top退出。
-u 以给定的有效的UID或用户名启动top,如在终端中输入top -u caochun 则只显示用户caochun相关的进程。
-U 和-u差不多,但是-U后可以跟真实的,有效的,保存的和文件系统的UID。
-s 以安全模式操作,使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
-S 累计时间模式切换开关,指定累计模式
在top命令的显示窗口,我们还可以输入以下字母,进行一些交互:
帮助文档如下:
Help for Interactive Commands - procps version 3.2.7
Window 1:Def: Cumulative mode Off. System: Delay 4.0 secs; Secure mode Off.
Z,B Global: 'Z' change color mappings; 'B' disable/enable bold
l,t,m Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
1,I Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode
f,o . Fields/Columns: 'f' add or remove; 'o' change display order
F or O . Select sort field
<,> . Move sort field: '<' next col left; '>' next col right
R,H . Toggle: 'R' normal/reverse sort; 'H' show threads
c,i,S . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
x,y . Toggle highlights: 'x' sort field; 'y' running tasks
z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
u . Show specific user only
n or # . Set maximum tasks displayed
k,r Manipulate tasks: 'k' kill; 'r' renice
d or s Set update interval
W Write configuration file
q Quit
( commands shown with '.' require a visible task display window )
Press 'h' or '?' for help with Windows,
h或者? : 显示帮助画面,给出一些简短的命令总结说明。
k :终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i:忽略闲置和僵死进程。这是一个开关式命令。
q: 退出程序。
r: 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S:切换到累计模式。
s : 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太 小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F :从当前显示中添加或者删除项目。
o或者O :改变显示项目的顺序。
l: 切换显示平均负载和启动时间信息。即显示隐藏第一行
m: 切换显示内存信息。即显示影藏内存行
t : 切换显示进程和CPU状态信息。即显示影藏CPU行
c: 切换显示命令名称和完整命令行。 显示完整的命令。 这个功能很有用。
M : 根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
T: 根据时间/累计时间进行排序。
W: 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
1: 在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况(只在多核CPU主机上才有意义):
多核上:
单核上:
z/Z:和b类似,Z设置z窗口或所有窗口的颜色分布(0-7八种颜色选择)。
按键z显示如下:
按键Z,显示如下:
b:高亮显示当前运行(Running)进程.
y:通过敲击“y”键关闭或打开运行态进程的加亮效果.
x:打开/关闭排序列的加亮效果(一般配合b显示,top默认的排序列是“%CPU”)
shift + > 或 shift + < 可以向右或左改变排序列.例如:
敲击键盘“b”(打开/关闭运行态进程的加亮效果),top的视图变化如下:
我们发现进程id为4883的“top”进程被加亮了,top进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。
敲击x键进程字段排序:(默认进入top时,各进程是按照CPU的占用量来排序)可以看到,top默认的排序列是“%CPU”
通过”shift + >”或”shift + <”可以向右或左改变排序列
= 解除显示指定进程的限制。当按i只显示正在运行的进程,而不显示出于睡眠状态的进程时,按下=可以解除这种限制,恢复默认显示。或在终端以top -p 运行top只显示指定进程时,按下=可以恢复默认显示。
A 在全屏模式和分屏显示模式间切换
G 转到下个窗口
***************************************************************************************************
一、Atop 是一个基于 ASCII 的全屏的性能监控工具,可用来监控进程的活动时间,高亮显示出一些过载的进程,还包括其他的一些系统指标例如:CPU、内存、交换分区、磁盘和网络等信息。
下载地址:atop
安装
1
2
3
|
cd atop-1.27-3
make
make install
|
二、htop是一个可以让用户与之交互的进程查看器。作为文本模式的应用程序,主要用于控制台或 X 终端中。当前具有按树状方式来查看进程,支持颜色主题,可以定制等特性。
Ubuntu下最强大的进程监视器htop使用
[日期:2013-05-28] | 来源:Linux社区 作者:LinuxIDC.com | [字体:大 中 小] |
1、top是Linux下常用的监控程序,htop相当于其加强版,颜色显示不同参数,且支持鼠标操作。
以前一直是在使用top查看系统的情况,现在发现了一个top的升级程序-htop。吸引我的除了功能上的增强外,就是它支持了鼠标的操作。top和htop主要区别:
In 'htop' you can scroll the list vertically and horizontally to see all processes and complete command lines.
In 'top' you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident).
'htop' starts faster ('top' seems to collect data for a while before displaying anything).
In 'htop' you don't need to type the process number to kill a process, in 'top' you do.
In 'htop' you don't need to type the process number or the priority value to renice a process, in 'top' you do.
'htop' supports mouse operation, 'top' doesn't
'top' is older, hence, more used and tested.
2.Ubuntu下软件安装htop
3.htop软件使用(主菜单)
F1 帮助信息 (支持鼠标哦)
记住常用的几个快捷键就行 什么t s P M H K等等
F2 一些设置 (这个比较简单)
F3 是可以搜索 F4是过滤出哪个进程 F5 就是上面的快捷键t F6是选择进程排序的依据(默认是CPU使用率)
F7 F8可以直接修改选中进程的优先级
F9 可以直接kill掉进程
PS 一个 :选中进程 按快捷键s 可以strace 进程 前提是安装了strace。
总结一句话 这个软件很简单 大家玩了就知道 决定比top好用
代替系统自带的top
编辑/root/.bashrc文件:
添加如下代码
if [ -f /usr/local/bin/htop ]; then
alias top=’/usr/local/bin/htop’
fi
安装
1
2
3
|
./configure
make
make intall
|
三、Iftop 主要用来显示本机网络流量情况及各相互通信的流量集合,如单独同那台机器间的流量大小,非常适合于代理服务器和iptables服务器使用
下载地址:iftop
安装
1
2
3
|
./configure
make
make install
|
四、Iotop 是一个用来监视磁盘 I/O 使用状况的 top 类工具。如下图所示,Iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息
Iotop 使用 Python 语言编写而成,要求 Python 2.5(及以上版本)和 Linux kernel 2.6.20(及以上版本)。
Iotop 提供有源代码及 RPM 包,可从其官方主页下载。
下载地址:Iotop
1、查看内核版本1
uname -r
2、重新编译内核
01
02
03
04
05
06
07
08
09
10
11
12
wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.58.tar.bz2
tar jxf linux-2.6.32.58.tar.bz2 -C /usr/src
cd /usr/src/linux-2.6.32.58
make mrproper
make menuconfig
#这一步中把General setup —— Enable extended accounting over taskstats (EXPERIMENTAL) —— Enable per-task storage I/O accounting这个选项选上。
make
make modules_install
make install
3、安装Python
1
2
3
4
5
6
wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2
tar jxf Python-2.7.2.tar.bz2 -C /usr/src
cd /usr/src/Python-2.7.2
./configure
make
make install
安装后的默认路径是:/usr/local/bin/python2.7
建立软连接,使系统默认的python指向python2.7
正常情况下即使python2.7安装成功后,系统默认指向的python仍然是2.4.3版本,考虑到yum是基于python2.4.3才能正常工作,不敢轻易卸载。如何实现将系统默认的python指向到2.7版本呢?
1
2
3
4
mv /usr/bin/python /usr/bin/python2.4
ln -s /usr/local/bin/python2.7 /usr/bin/python
#检验python指向是否成功
python -V
解决系统python软链接指向python2.7版本后,yum不能正常工作方法:
#vi /usr/bin/yum
将文本编辑显示的#/usr/bin/python修改为#/usr/bin/python2.4,保存修改即可
4、安装iotop
1
2
3
4
wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz
tar zxf iotop-0.4.4.tar.gz
python setup.py build
python setup.py install
iotop 就可以看到效果了
如果出现
1
2
3
4
5
[root@slavedb1 iotop-0.3.1]# iotop
Traceback (most recent call last):
File “/usr/local/bin/iotop”, line 4, in
import pkg_resources
ImportError: No module named pkg_resources
还需要装setuptools 这个包
1
2
3
4
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c9.tar.gz#md5=3864c01d9c719c8924c455714492295e
cd setuptools-0.6c9
python setup.py build
python setup.py install