Bandwhich 网络带宽监控¶
为什么要学 Bandwhich¶
Bandwhich 是一个终端网络带宽利用率工具,用 Rust 编写。它能实时显示当前哪些进程在使用网络、连接到哪些远程地址、每个连接的带宽消耗。当网络变慢需要排查原因、监控后台程序的网络活动时,Bandwhich 比 iftop 或 nethogs 更直观。
核心概念¶
| 概念 | 白话解释 | 用途 |
|---|---|---|
| Process View | 进程视图 | 按进程显示带宽使用 |
| Connection View | 连接视图 | 按连接显示详细流量 |
| Remote Address | 远程地址 | 数据流向的目标 |
| Upload/Download | 上传/下载 | 发送和接收的流量 |
安装配置¶
# macOS
brew install bandwhich
# Cargo
cargo install bandwhich
# Ubuntu
sudo apt install bandwhich
# 需要 root 权限运行
sudo bandwhich
快速上手¶
# 启动(需要 sudo)
sudo bandwhich
# 界面分三个面板:
# 上:按进程显示带宽
# 中:按连接显示流量
# 下:按远程地址汇总
# 快捷键:
# Tab 切换面板焦点
# j/k 上下滚动
# q 退出
常用选项¶
# 只监控特定接口
sudo bandwhich -i eth0
# 原始模式(不解析域名)
sudo bandwhich -n
# 只显示特定进程
sudo bandwhich -p
# DNS 解析
sudo bandwhich -d
# 输出为表格
sudo bandwhich --raw
进阶用法¶
排查网络问题¶
# 场景:网络突然变慢
# 1. 运行 bandwhich 查看哪个进程在大量传输
sudo bandwhich
# 2. 找到占用带宽最大的进程
# 3. 查看其连接的远程地址
# 4. 决定是否需要终止或限制
# 配合其他工具
# 找到进程后用 kill 或 tc 限速
kill -9 <PID>
日志记录¶
# 持续记录网络使用
sudo bandwhich --raw > network_log.txt &
# 定时快照
while true; do
echo "=== $(date) ===" >> network_stats.log
sudo bandwhich --raw >> network_stats.log 2>&1 &
BGPID=$!
sleep 5
kill $BGPID 2>/dev/null
sleep 55
done
常见问题¶
Q: 为什么需要 sudo?¶
Bandwhich 需要捕获网络数据包来识别进程连接,这需要 root 权限。
Q: 与 nethogs 相比?¶
- Bandwhich:UI 更美观、显示远程地址、Rust 性能
- nethogs:更轻量、无需安装 Rust 工具链
Q: macOS 上权限问题?¶
参考资源¶
- GitHub:https://github.com/imsnif/bandwhich
- 替代工具:nethogs、iftop、nload