对于服务器系统和网络管理员来说,每天监控和调试Linux系统的性能问题是一项繁重的工作。

在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易。

基于此原因,我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每个Linux/Unix 系统管理员的工作。

这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因,适用于各种监控场景的工具。

 

18个命令行工具

top、vmstat、lsof、tcpdump、netstat、htop、iotop、iostat、iptraf、psacct、monit、nethogs、iftop、monitorix、arpwatch、suricata、vnstat、nagios

 

1、top - Linux 进程监控

Linux下的 top 命令是一个性能监控程序,许多系统管理员常常用它来监控Linux性能,在许多Linux或者类Unix操作系统里都有这个命令。

top命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。

top命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。

top命令还可以显示正在运行进程的内存和CPU占用多的情况。

对系统管理员来说,top命令式是一个非常有用的,它可用于监控系统并在需要的时候采取正确的处理动作。

# top

18-linux-monitor-tools-01

有关Top命令更多的例子,请阅读 :Linux下12个使用Top命令的例子

 

2、vmstat – 虚拟内存统计

Linux 的 vmstat 命令用于显示虚拟内存内核线程磁盘系统进程I/O 块中断CPU 活动等的统计信息。

缺省情况下, vmstat 命令在 Linux 系统下不可用,你需要安装一个包含了 vmstat 程序的 sysstat 软件包。

vmstat 命令格式的常见用法是:

[root@ithomer ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 105368  90900 257588    0    0     9    33    4   11  2  0 97  0  0

更多的 vmstat 例子,请阅读 : 6 Linux 下的 Vmstat 命令实例

 

3、lsof-列出打开的文件

在许多Linux或者类Unix系统里都有 lsof 命令,它常用于以列表的形式显示所有打开的文件和进程。

打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。

使用这条命令,你可以很容易地看到正在使用哪个文件。这条命令最常用的格式如下:

# lsof
COMMAND     PID      USER   FD      TYPE     DEVICE     SIZE       NODE NAME
init          1      root  cwd       DIR      104,2     4096          2 /
init          1      root  rtd       DIR      104,2     4096          2 /
init          1      root  txt       REG      104,2    38652   17710339 /sbin/init
init          1      root  mem       REG      104,2   129900     196453 /lib/ld-2.5.so
init          1      root  mem       REG      104,2  1693812     196454 /lib/libc-2.5.so
init          1      root  mem       REG      104,2    20668     196479 /lib/libdl-2.5.so
init          1      root  mem       REG      104,2   245376     196419 /lib/libsepol.so.1
init          1      root  mem       REG      104,2    93508     196431 /lib/libselinux.so.1
init          1      root   10u     FIFO       0,17                 953 /dev/initctl

有关lsof命令的用法和例子的更多信息,请参考: Linux下10个使用lsof命令的例子

 

4、tcpdump - 网络包分析器

tcpdump 是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的TCP/IP包。

它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。在几乎所有主要的Linux发布里,tcpdump都可以使用。

# tcpdump -i eth0tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 9648
22:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 9648
22:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347

要想获得更多有关tcpdump用法的信息,请参阅: Linux下12个使用Tcpdump命令的例子

 

5、netstat-网络状态统计

netstat 是一个用于监控进出网络的包和网络接口统计的命令行工具。

netstat 是一个非常有用的工具,系统管理员可以用来监控网络性能,定位并解决网络相关问题。

# netstat -a | moreActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 *:mysql                     *:*                         LISTEN
tcp        0      0 *:sunrpc                    *:*                         LISTEN
tcp        0      0 *:realm-rusd                *:*                         LISTEN
tcp        0      0 *:ftp                       *:*                         LISTEN
tcp        0      0 localhost.localdomain:ipp   *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42709 TIME_WAIT
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42710 TIME_WAIT
tcp        0      0 *:http                      *:*                         LISTEN
tcp        0      0 *:ssh                       *:*                         LISTEN
tcp        0      0 *:https                     *:*                         LISTEN

有关Netstat更多的例子,请参阅Linux下20个使用Netstat命令的例子。

 

6、htop – Linux进程监控

htop 是一个非常高级的交互式的实时linux进程监控工具。

htop和top命令十分相似,但是它具有更丰富的特性,例如用户可以友好地管理进程,快捷键,垂直和水平方式显示进程等等。

htop是第三方工具,它不包含在linux系统中,你需要使用 yum 包管理工具去安装它。

CentOS命令安装: yum install htop -y

# htop

18-linux-monitor-tools-02-htop

对于Htop的安装,请读 : 在Linux安装Htop(Linux进程监控)

 

7、iotop-监控Linux磁盘I/O

iotop命令同样也非常类似于top命令Htop程序,不过它具有监控并显示实时磁盘I/O和进程的统计功能。

在查找具体进程和大量使用磁盘读写进程的时候,这个工具就非常有用。

CentOS 命令安装: yum install iotop -y

# iotop

 18-linux-monitor-tools-03-iotop
有关如何安装和使用iotop的信息,请阅读: 在Linux下安装Iotop

 

8、iostat - 输入/输出统计

iostat是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。

这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘

# iostat
Linux 2.6.18-238.9.1.el5 (tecmint.com)         09/13/2012

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.60    3.65    1.04    4.29    0.00   88.42

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0       17.79       545.80       256.52  855159769  401914750
cciss/c0d0p1      0.00         0.00         0.00       5459       3518
cciss/c0d0p2     16.45       533.97       245.18  836631746  384153384
cciss/c0d0p3      0.63         5.58         3.97    8737650    6215544
cciss/c0d0p4      0.00         0.00         0.00          8          0
cciss/c0d0p5      0.63         3.79         5.03    5936778    7882528
cciss/c0d0p6      0.08         2.46         2.34    3847771    3659776

有关iostat用法和举例的更多信息,请访问Linux下6个使用iostat命令的例子

 

9、iptraf-实时局域网IP监控

iptraf是一个在Linux控制台运行的、开放源代码的实时网络(局域网)监控应用。

iptraf采集了大量信息,比如通过网络的IP流量监控,包括TCP标记、ICMP详细信息、TCP/UDP流量分离、TCP连接包和字节数

同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非IP,IP校验和错误,接口活动等。

需要安装:yum -y install iptraf

运行命令:iptraf-ng

18-linux-monitor-tools-04-iptraf

有关IPTraf工具用法以及其他更多信息,请访问: IPTraf网络监控工具

 

10、psacct 或者 acct – 监视用户活动

psacct或者acct工具用于监视系统里每个用户的活动状况。这两个服务进程运行在后台,它们对系统上运行的每个用户的所有活动进行近距离监视,同时还监视这些活动所使用的资源情况。

系统管理员可以使用这两个工具跟踪每个用户的活动,比如用户正在做什么,他们提交了那些命令,他们使用了多少资源,他们在系统上持续了多长时间等等。

需要安装:yum -y install psacct

运行命令:iptraf-ng

ac 统计用户连接时间:

 ac                      显示所有用户连接总时间
 ac -p                   显示每个用户连接时间
 ac -d                   显示每天所有用户连接总时间
 ac silence              显示指定用户连接时间
 ac -d silence           显示指定用户每天连接时间

示例:

# ac --help

Usage: ac [OPTION] ...

OPTIONS:
  -d, --daily-totals        Print totals for each day
  -p, --individual-totals   Print time totals for each user
  -f, --file <file>         Read from <file>
  --complain                Print errors for whatever problem
  --reboots                 Count the time between login and reboot
  --supplants               Count the time between logins on the terminal
  --timewarps               Count the time between login and time warp
  --compatibility           Shortcut for --reboots --supplants --timewarps
  -a, --all-days            Do not skip days without login activity
  --tw-leniency <value>     Set the time warp leniency <value> in seconds
  --tw-suspicious <value>   Set the time warp suspicious <value> in seconds
  --print-year              Print year when displaying dates
  --print-zeros             Don't suppress zeros in category totals
  --debug                   Print verbose internal information
  -V, --version             Show version and exit
  -h, --help                Show help and exit

The system's default login accounting file is /var/log/wtmp.
#
# ac -p
        mimvp                             3015.31
        root                              2939.37
        total     5954.68

有关这些命令的安装和用法举例信息,请参阅文章:使用psacct或者acct监视用户活动

 

11、monit – Linux进程和服务监控工具

monit是一个免费的开源软件,也是一个基于网络的进程监控工具。它能自动监控和管理系统进程,程序,文件,文件夹,权限,总和验证码和文件系统。

这个软件能监控Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH等服务。你可以通过命令行或者这个软件提供的网络借口来查看系统状态。

需要安装:yum -y install monit

运行命令:http://localhost:2812

11-monit

更多内容请参阅:用Monit监控Linux进程

 

12、nethogs - 监视每个进程使用的网络带宽

nethogs 是一个开放源源代码的很小程序(与Linux下的top命令很相似),它密切监视着系统上每个进程的网络活动,同时还追踪着每个程序或者应用所使用的实时网络带宽。

需要安装:yum -y install nethogs

运行命令:nethogs

12-nethogs

NetHogs:Linux下的带宽监视

更多信息请参阅: 使用NetHogs监视Linux的网络带宽使用状况

 

13、iftop - 监视网络带宽

iftop是在控制台运行的开放源代码系统监控应用,它显示了系统上通过网络接口的应用网络带宽使用(源主机或者目的主机)的列表,这个列表定期更新。

iftop用于监视网络的使用情况,而‘top’用于监视CPU的使用情况。iftop是‘top’工具系列中的一员,它用于监视所选接口,并显示两个主机间当前网络带宽的使用情况。

需要安装:yum -y install iftop

运行命令:iftop

18-linux-monitor-tools-13-iftop

iftop-监视网络带宽。

更多信息请参阅:iftop-监视网络带宽的使用情况

 

14、monitorix - 系统和网络监控

monitorix 是一个免费的轻量级应用工具,它的设计初衷是运行和监控Linux/Unix服务器系统和资源等。

它有一个HTTP 网络服务器,这个服务器有规律的收集系统和网络的信息并以图形化的形式展示出来。

监控系统的平均负载和使用,内存分配、磁盘健康状况、系统服务、网络端 口、邮件统计(Sendmail,Postfix,Dovecot等),MySQL统计等等。

它就是用来监控系统的总体性能,帮助发现失误、瓶颈和异常 活动的。

需要安装:yum -y install monitorix

运行命令:monitorix -c /etc/monitorix/monitorix.conf

18-linux-monitor-tools-14-monitorix

 

15、arpwatch – 以太网活动监视器

arpwatch被设计用来监控Linux上的以太网地址解析 (MACIP地址的变化)。

他在一段时间内持续监控以太网活动并输出IP和MAC地址配对变动的日志。

它还可以向管理员发送邮件通知,对地址配对的增改发出警告。

这对于检测网络上的ARP攻击很有用。

需要安装:yum -y install arpwatch

运行命令:monitorix -i eth1

语法:arpwatch [-d][-f< 记录文件>][-i< 接口>][-r< 记录文件>]

参数

  • -d 启动排错模式。
  • -f<记录文件> 设置存储ARP记录的文件,预设为/var/arpwatch/arp.dat。
  • -i<接口> 指定监听ARP的接口,预设的接口为eth0。
  • -r<记录文件> 从指定的文件中读取ARP记录,而不是从网络上监听。
  • -n 指定附加的本地网络
  • -u 指定用户和用户组
  • -e 发送邮件给指定用户,非默认的root用户
  • -s 指定用户名作为返回地址,而不是默认的用户root

实例

监听网卡eth0的ARP信息

arpwatch -i eth0

监听ARP的信息,将相关信息记录到相应的文件

# arpwatch -i eth0 -f a.log    // 将信息记录到a.log中

更多信息请参阅 : Arpwatch to Monitor Ethernet Activity

 

16、suricata – 网络安全监控

suricata 是一个开源的高性能网络安全、入侵检测和反监测工具,可以运行Linux、FreeBSD和Windows上。

非营利组织OISF (Open Information Security Foundation)开发并拥有其版权。

更多信息请参阅 : Suricata – A Network Intrusion Detection and Prevention System

 

17、vnstat PHP – 网络流量监控

vnstat PHP 是流行网络工具”vnstat”的基于web的前端呈现。

vnstat PHP 将网络使用情况呈现在漂亮的图形界面中,它可以显示以小时、日、月计的上传和下载流量并输出总结报告。

需要安装:yum -y install vnstat

运行命令:vnstat -d   // 按每天统计

命令参数:

# vnstat --help
 vnStat 1.11 by Teemu Toivola <tst at iki dot fi>

         -q,  --query          query database
         -h,  --hours          show hours
         -d,  --days           show days
         -m,  --months         show months
         -w,  --weeks          show weeks
         -t,  --top10          show top10
         -s,  --short          use short output
         -u,  --update         update database
         -i,  --iface          select interface (default: eth0)
         -?,  --help           short help
         -v,  --version        show version
         -tr, --traffic        calculate traffic
         -ru, --rateunit       swap configured rate unit
         -l,  --live           show transfer rate in real time

按天统计

按月统计

更多信息请参阅 : VnStat PHP – Monitoring Network Bandwidth

 

18、nagios – 网络/服务器监控

nagios是领先而强大的开源监控系统,他可以让网络/系统管理员在问题影响到正常的业务之前发现并解决它们。

有了Nagios系统,管理员可以 在单个窗口内远程检测Linux、Windows、开关、路由器和打印机。

它可以危险警告并指出系统/服务器是否有异常,这可以间接帮助你在问题发生之前 采取抢救措施。

更多信息请参阅 : Install Nagios Monitoring System to Monitor Remote Linux/Windows Hosts

 

 

参考推荐

Linux 实用好评的命令工具 (推荐

Linux 15个命令,大幅提高工作效率

Linux有趣命令

Linux top 命令详解

Linux sar 系统性能分析命令详解

Perf — Linux下的系统性能调优工具

Linux free命令:buffer 与 cache 区别

Linux expect 命令无需输入密码登陆

Linux rc.local 命令不执行

Linux curl 命令模拟 POST/GET 请求

Unix/Linux 命令的后面括号中数字的含义

Linux tree 命令显示树形目录结构的安装和使用