20 个用于监控 Linux 性能的命令行工具
作为一名系统或网络管理员,每天负责监控和调试 Linux 系统性能问题是一项极具挑战性的责任。
它需要坚定不移的奉献精神、对 Linux 系统的深刻理解以及对确保最佳性能和可靠性的持续承诺。
在 IT 行业担任 Linux 管理员十年之后,我真正体会到监控和确保系统持续运行的艰巨任务。
鉴于此,我们整理了一份最常用的 20 个命令行监控工具的完整列表。这些宝贵的工具对于每个 Linux/Unix 系统管理员来说都是必不可少的,使他们能够有效地监控、诊断和维护系统的健康和性能。
这些监控工具适用于所有版本的Linux,可用于监控和查找性能问题的真正原因。此处显示的命令列表足以让您选择适合您的监控场景的命令。
1. Top – Linux 进程监控
Linux top命令是一个性能监视程序,许多系统管理员经常使用它来监视 Linux 性能,并且它在许多类 Linux/Unix 操作系统下都可用。
top 命令用于以有序列表的形式显示所有正在运行和活动的实时进程,并定期更新。它显示CPU 使用率、内存使用率、交换内存、缓存大小、缓冲区大小、进程 PID、用户、命令等等。
它还显示正在运行的进程的高内存和 CPU 利用率。top 命令对于系统管理员监控并在必要时采取纠正措施非常有用。让我们看看 top 命令的实际作用。
# top
2. VmStat – 虚拟内存统计信息
Linux VmStat命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动等的统计信息。
在 Linux 上安装 VmStat
默认情况下,vmstat 命令在 Linux 系统下不可用,您需要安装一个名为sysstat(一个强大的监控工具)的软件包,其中包含 vmstat 程序。
$ sudo yum install sysstat [On Older CentOS/RHEL & Fedora] $ sudo dnf install sysstat [On CentOS/RHEL/Fedora/Rocky Linux & AlmaLinux] $ sudo apt-get install sysstat [On Debian/Ubuntu & Mint] $ sudo pacman -S sysstat [On Arch Linux]
vmstat 命令格式的常见用法是。
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 43008 275212 1152 561208 4 16 100 105 65 113 0 1 96 3 0
3. Lsof – 列出打开的文件
lsof 命令在许多Linux/类 Unix系统中用于显示所有打开的文件和进程的列表。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。
使用此命令的主要原因之一是当磁盘无法卸载并显示文件正在使用或打开的错误时。使用此命令,您可以轻松识别哪些文件正在使用中。
lsof命令最常见的格式是。
# lsof COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 8,2 224 128 / systemd 1 root rtd DIR 8,2 224 128 / systemd 1 root txt REG 8,2 1567768 134930842 /usr/lib/systemd/systemd systemd 1 root mem REG 8,2 2714928 134261052 /usr/lib64/libm-2.28.so systemd 1 root mem REG 8,2 628592 134910905 /usr/lib64/libudev.so.1.6.11 systemd 1 root mem REG 8,2 969832 134261204 /usr/lib64/libsepol.so.1 systemd 1 root mem REG 8,2 1805368 134275205 /usr/lib64/libunistring.so.2.1.0 systemd 1 root mem REG 8,2 355456 134275293 /usr/lib64/libpcap.so.1.9.0 systemd 1 root mem REG 8,2 145984 134261219 /usr/lib64/libgpg-error.so.0.24.2 systemd 1 root mem REG 8,2 71528 134270542 /usr/lib64/libjson-c.so.4.0.0 systemd 1 root mem REG 8,2 371736 134910992 /usr/lib64/libdevmapper.so.1.02 systemd 1 root mem REG 8,2 26704 134275177 /usr/lib64/libattr.so.1.1.2448 systemd 1 root mem REG 8,2 3058736 134919279 /usr/lib64/libcrypto.so.1.1.1c ...
4. Tcpdump – 网络数据包分析器
tcpdump命令是最广泛使用的命令行网络数据包分析器或数据包嗅探器程序之一,用于捕获或过滤通过网络在特定接口上接收或传输的TCP/IP数据包。
它还提供了将捕获的包保存在文件中以供日后分析的选项。tcpdump 几乎在所有主流 Linux 发行版中都可用。
# tcpdump -i enp0s3 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on enp0s3, link-type EN10MB (Ethernet), capture size 262144 bytes 10:19:34.635893 IP example.ssh > 192.168.0.124.45611: Flags [P.], seq 2840044824:2840045032, ack 4007244093 10:19:34.636289 IP 192.168.0.124.45611 > example.ssh: Flags [.], ack 208, win 11768, options 10:19:34.873060 IP _gateway.57682 > example.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST 10:19:34.873104 IP example > _gateway: ICMP example udp port netbios-ns unreachable, length 86 10:19:34.895453 IP _gateway.48953 > example.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST 10:19:34.895501 IP example > _gateway: ICMP example udp port netbios-ns unreachable, length 86 10:19:34.992693 IP 142.250.4.189.https > 192.168.0.124.38874: UDP, length 45 10:19:35.010127 IP 192.168.0.124.38874 > 142.250.4.189.https: UDP, length 33 10:19:35.135578 IP _gateway.39383 > 192.168.0.124.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST 10:19:35.135586 IP 192.168.0.124 > _gateway: ICMP 192.168.0.124 udp port netbios-ns unreachable, length 86 10:19:35.155827 IP _gateway.57429 > 192.168.0.124.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST 10:19:35.155835 IP 192.168.0.124 > _gateway: ICMP 192.168.0.124 udp port netbios-ns unreachable, length 86 ...
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 0.0.0.0:sunrpc 0.0.0.0:* LISTEN tcp 0 0 example:domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:postgres 0.0.0.0:* LISTEN tcp 0 0 example:ssh 192.168.0.124:45611 ESTABLISHED tcp6 0 0 [::]:sunrpc [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 localhost:postgres [::]:* LISTEN udp 0 0 0.0.0.0:mdns 0.0.0.0:* udp 0 0 localhost:323 0.0.0.0:* udp 0 0 example:domain 0.0.0.0:* udp 0 0 0.0.0.0:bootps 0.0.0.0:* udp 0 0 example:bootpc _gateway:bootps ESTABLISHED ...
虽然现在 netstat 已被弃用,取而代之的是ss 命令,但您仍然可以在网络工具包中发现 netstat。
6. Htop – Linux 进程监控
htop是一个非常先进的交互式实时 Linux 进程监控工具,它与 Linux top 命令非常相似,但它具有一些丰富的功能,如用户友好的进程管理界面、快捷键、进程的垂直和水平视图等。
# htop
htop是第三方工具,它不随 Linux 系统自带,您需要使用系统包管理器工具进行安装。
有关 htop 安装的更多信息,请阅读我们的文章 -在 Linux 中安装 Htop(Linux 进程监控)。
7. Iotop – 监控 Linux 磁盘 I/O
iotop也与top 命令和htop 程序非常相似,但它具有统计功能,可以监视和显示实时磁盘 I/O和进程。
iotop 工具对于查找确切的进程以及进程中高度使用的磁盘读/写非常有用。
在 Linux 上安装 Iotop
默认情况下,Linux 下没有iotop命令,您需要按照所示安装它。
$ sudo yum install iotop [On Older CentOS/RHEL & Fedora] $ sudo dnf install iotop [On CentOS/RHEL/Fedora/Rocky Linux & AlmaLinux] $ sudo apt-get install iotop [On Debian/Ubuntu & Mint] $ sudo pacman -S iotop [On Arch Linux]
iotop命令格式的常见用法是。
# iotop
8. Iostat – 输入/输出统计
iostat是一个简单的工具,它将收集并显示系统输入和输出存储设备统计信息。此工具通常用于跟踪存储设备性能问题,包括设备、本地磁盘和远程磁盘(如NFS)。
在 Linux 上安装 Iostat
要获取iostat命令,您需要安装一个名为sysstat的包,如图所示。
$ sudo yum install sysstat [On Older CentOS/RHEL & Fedora] $ sudo dnf install sysstat [On CentOS/RHEL/Fedora/Rocky Linux & AlmaLinux] $ sudo apt-get install sysstat [On Debian/Ubuntu & Mint] $ sudo pacman -S sysstat [On Arch Linux]
iostat 命令格式的常见用法是。
# iostat Linux 4.18.0-193.el8.x86_64 (example) 04/05/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.21 0.03 0.59 2.50 0.00 96.67 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 3.95 83.35 89.63 1782431 1916653
9. IPTraf – 实时 IP LAN 监控
IPTraf是一款基于控制台的开源Linux实时网络(IP LAN)监控实用程序。它收集各种信息,例如通过网络传输的IP 流量监控,包括 TCP 标志信息、ICMP 详细信息、TCP/UDP 流量细分、TCP 连接数据包和字节数。
它还收集有关 TCP、UDP、IP、ICMP、非 IP、IP 校验和错误、接口活动等的一般和详细接口统计信息。
10. Psacct 或 Acct – 监控用户活动
psacct或acct工具对于监控系统上每个用户的活动非常有用。这两个守护进程都在后台运行,密切关注系统上每个用户的整体活动以及他们所消耗的资源。
这些工具对于系统管理员跟踪每个用户的活动非常有用,例如他们在做什么、他们发出了什么命令、他们使用了多少资源、他们在系统上活动了多长时间等等。
11. Monit – Linux 进程和服务监控
Monit是一个免费的开源、基于 Web 的进程监控实用程序,可自动监控和管理系统进程、程序、文件、目录、权限、校验和以及文件系统。
它监控 Apache、MySQL、Mail、FTP、ProFTP、Nginx、SSH 等服务。可以从命令行或使用其自己的 Web 界面查看系统状态。
有关安装和配置,请阅读我们的文章 -如何安装和设置 Monit(Linux 进程和服务监控)程序。
12. NetHogs – 监控每个进程的网络带宽
NetHogs是一款开源的小程序(类似于 Linux top 命令),它可以监控系统上每个进程的网络活动。它还可以跟踪每个程序或应用程序使用的实时网络流量带宽。
# nethogs
有关安装和使用,请阅读我们的文章:使用 NetHogs 监控 Linux 网络带宽
13. iftop - 网络带宽监控
iftop是另一个基于终端的免费开源系统监控实用程序,它显示通过系统网络接口的网络带宽利用率(源和目标主机)的频繁更新列表。
iftop类似于网络使用环境中的“ top ”,就像“ top ”提供有关 CPU 使用率的见解一样。
iftop属于备受推崇的“top”网络监控工具系列。它专门用于观察用户选择的网络接口,可呈现两个指定主机之间当前带宽利用率的实时数据。
# iftop
有关安装和使用,请阅读我们的文章:iftop – 监控网络带宽利用率
14. Monitorix – 系统和网络监控
Monitorix is a free lightweight utility that is designed to run and monitor system and network resources as many as possible in Linux/Unix servers.
It has a built-in HTTP web server that regularly collects system and network information and displays them in graphs. It Monitors system load average and usage, memory allocation, disk driver health, system services, network ports, mail statistics (Sendmail, Postfix, Dovecot, etc), MySQL statistics, and many more.
It is designed to monitor overall system performance and helps in detecting failures, bottlenecks, abnormal activities, etc.
For installation and usage, read our article: Monitorix a System and Network Monitoring Tool for Linux
15. Arpwatch – Ethernet Activity Monitor
Arpwatch is a kind of program that is designed to monitor the Address Resolution of (MAC and IP address changes) of Ethernet network traffic on a Linux network.
It continuously keeps watch on Ethernet traffic and produces a log of IP and MAC address pair changes along with a timestamp on a network. It also has a feature to send email alerts to administrators, when a pairing is added or changes. It is very useful in detecting ARP spoofing on a network.
For installation and usage, read our article: Arpwatch to Monitor Ethernet Activity
16. Suricata – Network Security Monitoring
Suricata is a high-performance open-source Network Security and Intrusion Detection and Prevention Monitoring System for Linux, FreeBSD, and Windows.
It was designed and owned by a non-profit foundation OISF (Open Information Security Foundation).
For installation and usage, read our article: Suricata – A Network Intrusion Detection and Prevention System
17. VnStat PHP – Monitoring Network Bandwidth
VnStat PHP is a web-based frontend application for the most popular networking tool called “vnstat“. VnStat PHP monitors network traffic usage in nicely graphical mode.
It displays the total IN and OUT network traffic usage in hourly, daily, monthly, and full summary reports.
有关安装和使用,请阅读我们的文章:监控网络带宽使用情况
18. Nagios – 网络/服务器监控
Nagios 是一个领先的开源强大监控系统,它使网络/系统管理员能够在服务器相关问题影响主要业务流程之前识别并解决这些问题。
使用 Nagios 系统,管理员可以在一个窗口上监控远程 Linux、Windows、交换机、路由器和打印机。它会显示严重警告并指示您的网络/服务器是否出现问题,从而间接帮助您在问题发生之前开始补救过程。
有关安装、配置和使用,请阅读我们的文章 -安装 Nagios 监控系统以监控远程 Linux/Windows 主机
19. Nmon:监控 Linux 性能
Nmon(代表 Nigel 的性能监视器)工具,用于监视所有 Linux 资源,例如 CPU、内存、磁盘使用情况、网络、顶级进程、NFS、内核等等。此工具有两种模式:在线模式和捕获模式。
在线模式用于实时监控,捕获模式用于以 CSV 格式存储输出以供后续处理。
有关安装和使用,请阅读我们的文章:在 Linux 中安装 Nmon(性能监控)工具
20. Collectl:一体化性能监控工具
Collectl是另一个功能强大且功能丰富的基于命令行的实用程序,可用于收集有关 Linux 系统资源的信息,例如 CPU 使用率、内存、网络、inodes、进程、nfs、TCP、套接字等。
有关安装和使用,请阅读我们的文章:在 Linux 中安装 Collectl(一体化性能监控)工具
我们想知道您使用哪种监控程序来监控 Linux 服务器的性能。如果我们遗漏了您希望我们在此列表中包含的任何重要工具,请通过评论告知我们,并且请不要忘记分享它。