1. Ncdu
熟悉 Vim 的人会感到如鱼得水,因为它使用 Vim 键进行导航;而喜欢用箭头键的人也不会对 Vim 感到不满。就像基于终端的文件管理器一样,你可以毫不费力地深入到目录中。对于每个目录,ncdu 会显示目录的大小。这是一个简单的小工具,只做一件事,并且做得很好。
Ncdu 可能在大多数官方发行库中找到。
要在 Debian 及其衍生版本上安装它,例如 Ubuntu、Linux Mint 等:
sudo apt-get install ncdu
要在红帽及其衍生版上安装,例如,Fedora:
sudo dnf install ncdu
在 Arch 及其衍生版本上安装它:
sudo pacman -S ncdu
2. Btop++
因为它提供了我整个系统的广泛概述,Btop无疑是我最喜欢的工具之一。它显示了CPU、磁盘、内存和网络利用率的条形图和图表。此外,"进程"窗格具有类似于top的界面,可让您过滤和终止单个进程。
要筛选进程,请按 F 键,要结束高亮显示的进程,请按 K 键。
Btop 界面最棒的地方之一是它的适应性非常简单。Btop 附带了预设,您可以通过按 P 键轻松切换它们。每个预设都会显示一组独特的面板。
除此之外,您可以通过按一个键来启用或禁用任何窗格。Btop使您能够轻松快速地更改对系统资源的_视图_。
乐趣并未止步于此,因为对于那些没有它们会感到迷失的人,还有(再次)Vim 键。
Btop 是对标准顶部实用程序的重大升级。
它可以通过大多数本地发行版的仓库获得。对于某些发行版,它可以在相应的_额外_仓库中获得。对于其他人,您可以通过Brew或Snap安装它。
3. 带状物
Bandwhich 是一个实时网络监控工具,能够显示实时网络连接。它与 netstat 的不同之处在于它专注于实时活动连接。它与 tcpdump 的区别在于它不是一个无尽的数据包流。
sudo bandwhich
方便的是,bandwhich 提供了两个简单的功能来帮助您捕获和查看连接。首先,您可以随时按 Space 键暂停捕获,以获取连接的快照。其次,您可以在累积模式下运行它,这样会逐步将进程和带宽统计信息添加到列表中,而不会将其移除——类似于日志。
sudo bandwhich --total-utilization # Or -t
我更喜欢 Bandwhich 而不是其他工具,比如 tcpdump,因为它简单方便,使我能够快速识别哪些进程正在与网络联系。
它可以通过 Arch、Nix、Void 和 Fedora(Copr)仓库获取;对于其他人,您可以通过 Snap、Cargo,或直接通过 GitHub 发布版安装它。
在 Debian 及其衍生版(例如,Ubuntu 或 Mint)上安装它:
sudo apt-get install ncdu
在红帽及其衍生版(例如,Fedora)上安装它:
sudo dnf copr enable atim/bandwhich -y
sudo dnf install bandwhich
Fedora软件包会及时更新。其他RHEL发行版的软件包更新滞后,您可能会发现您的发行版版本尚不支持。
在 Arch 及其衍生版本上安装它:
sudo pacman -S bandwhich
如果您在安装过程中遇到问题,并且已设置 Rust 环境,可以退回到 cargo:
cargo install bandwhich
4. 我的 traceroute (mtr)
MTR命令就像tracepath的实时版本。Tracepath会按顺序对每个网络跳点ping固定次数;而MTR则会同时对每个网络跳点进行ping,直到停止。它在一个实时的curses界面中显示数据包丢失、抖动和延迟的实时统计信息。
mtr example.com
路由器通常会降低对 ICMP 数据包的优先级,因此在某些跳数上经常会看到高的丢包率。还要注意,如果您通过 VPN 连接,这些跳数更可能会限制 ICMP,但这并不意味着您有连接问题;这只是意味着您有 ICMP 问题。在这些情况下,切换到 TCP (-T) 或 UDP (-u) 很少能有所帮助。
MTR 还支持报告功能。使用 “-w” 标志可以生成 “宽” 报告,宽度足以容纳主机名。或者,使用 “-j” 输出 JSON。使用 “-c” 标志来设置探测的数量。
mtr -wc 1 example.com # Wide report; 1 probe.
mtr -jc 1 example.com # JSON report; 1 probe.
可选的选项很多,但一幅图胜过千言万语。
MTR 已经存在了几十年,并且在每个发行库中都可以找到。
5. 带宽监控器 (bmon)
Bmon 是一个表面上看起来简单的工具,用于实时监控带宽使用情况。虽然它不像其他工具那样显示主机信息,但它的唯一焦点是带宽。
bmon m
bmon -p 'eth*' # Listen to all hardwired interfaces.
您可以使用 ifconfig 查看您所有的接口。
确实,Btop++ 也提供实时带宽可视化,但 bmon 提供了一些额外的网络统计信息。当 bmon 打开时,按 D 或 i,它将打开附加窗格以提供额外的上下文。
bmon 的最佳功能之一是它可以脚本化。可以定义特定的输出字段,进行格式化,然后使用其他工具或脚本进一步处理。
bmon -p 'eth*' -o format:fmt='$(element:name) $(attr:rx:bytes) $(attr:tx:bytes) $(attr:rx:errors)\n'
要查看格式规则,请使用以下命令:
bmon -o format:help
Bmon 已经存在一段时间,并且在大多数官方发行库中都可以找到。
这些工具不能替代它们的标准 GNU/Linux 对应工具;它们只是解决特定的空白。许多标准工具没有实时监控能力,我们通常只想看看我们的系统是如何随着时间变化的。例如:
- Tcpdump 发出大量文本;我只是想看看有什么连接到网络。
- Du 从来不是以“搜索和摧毁”为设计初衷的——这与它的 dd 兄弟们不同。
尽管列出 的工具满足非常具体的需求,但并不解决所有需求——为此,您需要继续深入挖掘。