bandwhich 显示在 Linux 和 macOS 上什么占用了您的网络带宽

band 是一个相对较新的终端带宽利用工具,用于 Linux、*BSD 和 macOS,用 Rust 编写。 它按进程、连接和远程 IP/主机名显示当前网络利用率。

此工具的主要目的是显示占用您带宽的内容。 它最初被称为“what”,但它的名字大约在 3 周前被更改为 bandwhich。

band 能够通过嗅探给定的网络接口并记录 IP 数据包大小,将其与
/proc

Linux 上的文件系统和
lsof

在 macOS 上。 此外,该工具尝试在后台将 IP 地址解析为其主机名,“尽最大努力”使用反向 DNS; 这可以使用禁用
-n / --no-resolve

选项。

默认情况下,bandwhich 以交互模式运行,它有 3 个窗格显示:按进程名称的网络利用率、按连接的利用率和按远程地址的利用率。 由于bandwhich 具有响应式终端用户界面,因此您运行bandwhich 的终端窗口必须足够大才能显示这3 个窗格 – 根据窗口宽度和/或高度,可能仅显示这些窗格中的一两个。

具有响应式终端用户界面的乐队

如果您只想显示这些窗格之一,bandwhich 有一个选项 – 运行它
-a / --addresses

只显示地址表,
-c / connections

仅显示网络连接表,或使用
-p / --processes

只显示进程表。

最近添加了允许从命令行选择显示哪些窗格/表格的功能,以及对 IPv6 的支持,以及 Mac 上的 VPN 流量嗅探。 最近还添加了对 WireGuard 接口的支持,以及一个小而有用的功能,允许通过按
SPACE

键(这仅适用于交互模式 – 它不适用于原始模式)。

bandwhich 以原始模式运行,过滤“rclone”的结果(bandwhich --raw | grep rclone)

除了交互模式,bandwhich 还有一个原始模式(使用它运行 bandwhich 与
-r / --raw

选项)产生机器友好的输出。 此模式会自动滚动原始输出而不删除任何先前的行。 如果这会以 %H:%M:%S 的形式显示常规时间戳会很有用,但也许将来的版本中会添加这样的功能。

相关:使用Termshark分析网络流量,TShark的终端用户界面(Wireshark)

还值得注意的是,默认情况下,bandwhich 显示所有可用(活动)网络接口的带宽利用率。 如果要指定要侦听的特定网络接口,请使用
-i / --interface

选项后跟网络接口名称,例如 eth0、enp4s0 或任何调用的接口。

有很多工具可以在命令行上显示网络带宽利用率,包括iftop、nethogs等。 bandwhich 在某些方面是相似的,但它也做不同的事情。

例如,iftop 显示主机接口上的带宽使用情况,不显示正在使用带宽的进程。 另一方面,nethogs 是一个命令行工具,它对每个进程的带宽进行分组(它显示了 PID、用户、程序、接口和每个 PID 发送/接收的信息),与 bandwhich 相比,它显示的信息更相似,但是nethogs 缺少在各种情况下都非常有用的原始输出模式。 此外,nethogs 不显示单个连接。 信息的呈现方式也不同,我个人非常喜欢bandwhich终端用户界面。

无论如何,我不是来传教的,而是来通知的。 使用您最喜欢且最适合您需要的工具。

安装bandwhich

上面链接的 bandwhich 项目页面有 Arch Linux、Nix/NixOS、Void Linux 的安装说明, Fedora (Copr) 和 macOS。 还有使用 Cargo 安装 bandwhich 的说明,Rust 包管理器,应该适用于任何 Linux 发行版。 该应用程序不能在 Microsoft Windows 上运行,至少目前是这样。

在没有可用软件包的 Linux 发行版上安装 bandwhich 的最简单方法是从 bandwhich 发布选项卡下载预编译的二进制文件,然后解压缩存档以便您可以使用 bandwhich 可执行文件。 你可能想把它安装在你的某个地方
$PATH

, 例如
/usr/local/bin

– 您可以使用以下命令安装它(在您提取了 bandwhich 二进制文件的文件夹中运行此命令):

sudo install bandwhich /usr/local/bin