1. top - Linux进程监视
top
命令是一个性能监视程序,被系统管理员频繁使用,并且在大多数类Linux/Unix系统下都可以用。top命令可以展示所有活跃的进程列表,并定时更新。它可以显示CPU利用率、内存利用率、交换内存、缓存大小、缓冲区大小、进程PID、用户、命令等等,还能显示出高CPU、内存利用率的进程。
$ top
更多示例可以参考:12 TOP Command Examples in Linux
2. VmStat - 虚拟内存统计
VmStat命令用于显示虚拟内存、内核线程、硬盘、系统进程、I/O块、中断、CPU活动等项目的统计信息。默认情况下Linux系统不提供vmstat命令,需要安装一个包叫做sysstat
,这个包提供了vmstat
程序。
[root@h96 ~]# 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 25210804 136128 6474948 0 0 1 150 0 1 8 2 90 0 0
更多示例可以参考:6 Vmstat Command Examples in Linux
3. lsof - 列出打开的文件
lsof
命令在许多类Linux/Unix系统下可以使用,用于列出打开的文件和相应进程。打开的文件包括磁盘文件、网络Socket、管道、设备和进程。用这个命令的一个主要原因是,当磁盘不能正确卸载(unmount)的时候,可以查看导致unmount失败的已经打开的文件。用这个命令可以轻易地识别出哪些文件正在使用。最常用的形式如下:
$ lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 4096 64 /
systemd 1 root rtd DIR 253,0 4096 64 /
systemd 1 root txt REG 253,0 1628608 741342 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20064 3221250427 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265576 3221792703 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 3221250371 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 3221250378 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 3221250473 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19896 3221250389 /usr/lib64/libattr.so.1.1.0
...
更多示例可以参考:10 lsof Command Examples in Linux
4. tcpdump - 网络包分析器
Tcpdump是最常用的命令行形式的网络包分析和嗅探程序之一,可以捕获或者过滤特定网络上收到的TCP/IP包。它也提供了把网络包保存到文件的选项,用于进一步分析。tcpdump几乎在所有主流的Linux发行版上都可用。
$ tcpdump -i eth0
tcpdump: 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
更多示例可以参考:12 Tcpdump Command Examples in Linux
5. netstat - 网络统计
Netstat是一个命令行工具可以监视入站和出站的网络包以及网络接口的统计信息。这是非常有用的工具,可以监视网络性能并解决网络相关的问题。
$ netstat -a | more
Active 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
更多例子可以参考:20 Netstat Command Examples in Linux
6. htop - Linux进程监视
Htop是一个更高级的交互式实时Linux进程监视工具,与top命令非常相似,但是htop的功能更丰富,比如更好用的交互界面、快捷键、进程的垂直和水平视图等等。Htop是一个第三方工具,不包含在Linux系统中,需要用yum
包管理工具进行安装。
$ htop
Htop的安装可以参考:Install Htop (Linux Process Monitoring) in Linux
用htop的时候可能会发现一些进程显示了 N N N遍( N < = N<= N<=CPU核心数),视觉体验很差,可以参考这一篇帖子,按F2,选择 Display options,选择 Hide userland threads。
7. iotop - 监视Linux的磁盘I/O
iotop与top和htop命令非常像,但是它的功能是实时监视磁盘IO和进程,这个工具可以用来寻找高磁盘占用的进程。
$ iotop
8. iostat - 输入输出统计
iostat是一个统计存储设备的输入和输出的工具,经常用来跟踪存储设备的性能问题,包括设备、本地磁盘、远程磁盘(例如NFS)。
$ iostat
Linux 3.10.0-1127.el7.x86_64 (h96) 2020年12月01日 _x86_64_ (12 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
7.68 0.00 2.08 0.16 0.00 90.08
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.61 0.27 6.99 671109 17066352
sdb 4.13 10.30 1793.70 25166691 4382127817
dm-0 4.09 10.30 1793.70 25157287 4382127817
dm-1 0.00 0.00 0.00 2072 0
dm-2 0.00 0.00 0.00 1036 0
更多例子可以参考:6 Iostat Command Examples in Linux
9. IPTraf - 实时IP LAN监视
IPTraf是一个开源的基于控制台的实时网络(IP LAN)监视工具。它可以收集各种信息,比如监视通过网络传递的IP流量,包括TCP标志位信息、ICMP详细信息、TCP/UDP流量故障、TCP连接数据包和字节计数,也可以收集校验错误、接口活动等常规或详细信息。
$ yum install iptraf -y
$ iptraf-ng
更多例子可以参考:IPTraf Network Monitoring Tool
10. psacct或acct - 监视用户活动
psacct或acct工具是监护系统上每个用户活动的工具。两种工具都有守护进程在后台运行,密切监视系统上每个用户的总体活动和消耗的资源。这些工具用于系统管理员跟踪每个用户的活动(他们在做什么、发出了什么命令、使用了多少资源、处于活跃状态的时间)。
$ yum install psacct -y
$ systemctl start psacct
# 显示用户连接时间
$ ac
total 4020.69
# 显示每日用户统计
$ ac -d
Sep 4 total 11.36
Sep 5 total 0.35
Sep 9 total 0.17
Sep 11 total 17.39
Sep 14 total 76.08
Sep 15 total 18.52
Sep 16 total 0.40
Sep 17 total 9.99
Sep 18 total 18.88
Sep 19 total 41.03
Sep 21 total 13.42
…
更多安装步骤和例子可以参考:psacct - CSDN博客
11. Monit - Linux进程和服务监视
Monit是一个开源的基于Web的进程监视工具,可以自动监视和管理系统进程、程序、文件、目录、权限、检验和和文件系统。它可以监视Apache、MySQL、Mail、FTP、ProFTP、Nginx、SSH等服务。可以从命令行或者Web界面查看系统状态。
$ yum install monit -y
$ monit
New Monit id: 9c46b454e626d229666f7aa3e4dbb7f0
Stored in '/root/.monit.id'
Starting Monit 5.26.0 daemon with http interface at [localhost]:2812
添加更多监控的服务可以参考:Linux Process Monitoring with Monit
12. NetHogs - 监视每个进程的网络带宽
NetHogs是一个开源的小程序,类似于Linux top命令,每个网络活动显示一行,也可以跟踪每个程序使用的实时网络流速度。
$ yum install nethogs -y
$ nethogs
更多示例参考:Monitor Linux Network Bandwidth Using NetHogs
13. iftop - 网络带宽监视
14. Monitorix - 系统和网络监视
下载地址:https://www.monitorix.org/downloads.html
$ yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple perl-IO-Socket-SSL wget perl perl-XML-Lib -y
$ wget https://www.monitorix.org/monitorix-3.12.0-1.noarch.rpm
$ systemctl start monitorix
打开浏览器 http://localhost:8080/monitorix/
安装和配置可以参考:Monitorix a System and Network Monitoring Tool for Linux
15. Arpwatch - 以太网活动监视
16. Suricata - 网络安全监视
17. VnStat - 监视网络带宽
18. Nagios – 网络/服务器监控
19. nmon - 监视linux性能
$ yum install epel-release
$ yum install nmon -y
$ nmon
20. collectl - 多合一性能监控工具
从13开始大部分工具是重复的,所以不翻译了,请直接查看原文。