我爱帮助网-手册QQ交流群

Nas交流与矿渣群(unraid 群晖 猫盘 蜗牛等):580680114         物联网/智能家居群:518812757             帮助教程:手册大全

软件使用与建站群:1057308983      虚拟化交流群:13448651

0

详解 Linux 系统常用Top命令监控工具(top,htop,iotop,iftop)的使用方法

转自 codesheep的博客




 概 述

本文主要记录一下 Linux 系统上一些常用的系统监控工具,非常好用。正所谓磨刀不误砍柴工,花点时间总结一下是值得的!

 

本文内容脑图如下:

 本文内容脑图


top 命令

top 命令我想大家都挺熟悉吧! Linux 下的 top 命令有点类似于 Windows 下的任务管理器,能够实时动态地监控并显示系统中各个进程的资源占用状况,是 Linux 下常用的性能监控和分析工具。

一个常见的 top 命令的执行视图如下:

top 命令视图

下面我们详细在图中标注出每个指标的含义,认真看图对比理解吧(必要时可保存该图备查哦):

top 命令视图中各项指标详解

怎么样,理解起来够直观了吧,至于 top 命令的其他一些带参数用法自行 help 吧,太多了,不再赘述了!


htop 命令

htop 是 Linux 下一个交互式的进程浏览器,可以完全替代上一小节中所讲的 top 命令,与 top 命令对比,htop 命令有如下优点:

  • 直接支持鼠标点击操作( 就问你 6 不 6 !)
  • 画面可以水平垂直滚动,更像一个窗口
  • 可以跟踪进程,显示进程打开的文件
  • 支持进程的树状图显示
  • 支持按照名称查找进程

总之可视化方面做得 66 的,我们来体验一下:

htop

就该图来说,分成三部分:

  • 顶部是资源使用情况概览,这进度条看着就挺酷炫
  • 中间是进程表,和 top 命令的类似
  • 下面是操作指引和快捷键清晰明了

我们接下来再来看一些图形化的操作:

  • 进程树状图

htop 进程树状图

  • 鼠标点击各种指标来排序

htop 支持鼠标点击

  • 跟踪进程功能

htop 进程跟踪功能

htop 进程跟踪功能


iotop 命令

iotop 是用来监控硬盘 IO 的使用情况,UI 界面和 top 类似,其中包括 PID、用户、I/O、进程 等相关信息。

Linux 下系统自带的 IO 统计工具如 iostat,nmon 等大多数是只能统计到 per 设备的读写情况,如果你想知道每个进程是如何使用 IO 的就比较麻烦,使用 iotop 命令可以很方便的查看。

iotop 命令


iftop 命令

iftop 是 Linux 系统的流量和带宽监控工具,可用于查看实时的网络流量、监控 TCP/IP 连接等,也是非常有用的!

我们来做一下实验,命令执行后效果如下:

iftop 效果视图

iftop 效果视图

iftop 命令常用的参数如下,这里做个小规模总结:

  • -i 设定监测的网卡,如:# iftop -i eth1
  • -B 以 bytes 为单位显示流量 (默认是 bits),如:# iftop -B
  • -n 使 host 信息默认直接都显示 IP,如:# iftop -n
  • -N 使端口信息默认直接都显示端口号,如: # iftop -N
  • -F 显示特定网段的进出流量,如 # iftop -F 10.10.1.0/24  # iftop -F 10.10.1.0/255.255.255.0
  • -h( display this message ),帮助,显示参数信息
  • -p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的 IP 信息;
  • -b 使流量图形条默认就显示;

再来总结一下,进入 iftop 视图画面后的一些操作命令 (注意大小写):

  •  h切换是否显示帮助;
  •  n切换显示本机的 IP 或主机名;
  •  s切换是否显示本机的 host 信息;
  •  d切换是否显示远端目标主机的 host 信息;
  •  t切换显示格式为 2 行 /1 行 /只显示发送流量 /只显示接收流量;
  •  N切换显示端口号或端口服务名称;
  •  S切换是否显示本机的端口信息;
  •  D切换是否显示远端目标主机的端口信息;
  •  p切换是否显示端口信息;
  •  P切换暂停 /继续显示;
  •  b切换是否显示平均流量图形条;
  •  T切换是否显示每个连接的总流量;
  •  l打开屏幕过滤功能,输入要过滤的字符,比如 ip,按回车后,屏幕就只显示这个 IP 相关的流量信息;
  •  L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
  •  j或按k可以向上或向下滚动屏幕显示的连接记录;
  •  1或2或3可以根据右侧显示的三列流量数据进行排序;
  • 按<根据左边的本机名或 IP 排序;
  • 按>根据远端目标主机的主机名或 IP 排序;
  • 按o切换是否固定只显示当前的连接;


iftop、iotop、htop、atop介绍 ( 转自xupeng博客)
 

一、Atop 是一个基于 ASCII 的全屏的性能监控工具,可用来监控进程的活动时间,高亮显示出一些过载的进程,还包括其他的一些系统指标例如:CPU、内存、交换分区、磁盘和网络等信息。

下载地址:atop

安装

1
2
3
cd atop-1.27-3
make
make install

二、htop是一个可以让用户与之交互的进程查看器。作为文本模式的应用程序,主要用于控制台或 X 终端中。当前具有按树状方式来查看进程,支持颜色主题,可以定制等特性。

下载地址:htop

安装

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


网络上其它有关这些命令的相关文章





一.  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

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

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]

上一篇