bandwhich - Monitor de Largura de Banda por Processo
bandwhich é um utilitário de terminal Rust que exibe a utilização atual de rede dividida por processo, conexão e IP/hostname remoto. Diferentemente de iftop (por conexão) ou nethogs (apenas por processo), bandwhich correlaciona sockets com o processo proprietário e resolve endpoints remotos, para que você veja instantaneamente qual aplicativo — e qual host remoto — está consumindo largura de banda.
Instalação
| Plataforma | Comando |
|---|
| Cargo (todas as plataformas) | cargo install bandwhich |
| Arch Linux | sudo pacman -S bandwhich |
| Debian/Ubuntu | sudo apt install bandwhich |
| Fedora | sudo dnf install bandwhich |
| macOS (Homebrew) | brew install bandwhich |
| Nix | nix-env -iA nixpkgs.bandwhich |
| Binário pré-compilado | Baixe da página GitHub Releases |
Privilégios
bandwhich deve fazer sniff de pacotes, portanto precisa de capacidades elevadas:
# Mais simples: execute com sudo
sudo bandwhich
# Ou conceda ao binário capacidades uma vez (sem sudo depois, Linux)
sudo setcap cap_net_raw,cap_net_admin=eip $(which bandwhich)
Uso Básico
| Comando | Descrição |
|---|
sudo bandwhich | Monitora todas as interfaces, TUI ao vivo |
sudo bandwhich -i eth0 | Observa uma única interface |
sudo bandwhich --interface wlan0 | Mesmo, forma longa |
bandwhich --help | Lista completa de opções |
bandwhich --version | Versão |
Opções Principais
| Opção | Descrição |
|---|
-i, --interface NAME | Limita monitoramento a uma interface |
-n, --no-resolve | Pula buscas DNS reversas (mais rápido, IPs brutos) |
-r, --raw | Saída legível por máquina, não interativa (bom para logging) |
-p, --processes | Mostra apenas a tabela de processos |
-c, --connections | Mostra apenas a tabela de conexões |
-a, --addresses | Mostra apenas a tabela de endereços remotos |
--total-utilization | Imprime um total único em vez da UI ao vivo |
-s, --show-dns | Inclui consultas DNS na visualização de conexões |
-d, --dns-server IP | Usa um resolvedor específico para buscas reversas |
Teclas Interativas
| Tecla | Ação |
|---|
Tab | Alterna layout / rotaciona qual tabela está expandida |
Space | Pausa / retoma atualizações |
↑ / ↓ | Rola dentro de uma tabela |
q / Ctrl+C | Sai |
Lendo a Exibição
bandwhich mostra três tabelas ao vivo:
| Tabela | Diz a você |
|---|
| Utilização por processo | Quais executáveis estão enviando/recebendo, com taxas para cima/para baixo |
| Conexões | Cada socket: local → remoto, protocolo e taxa por conexão |
| Utilização por endereço remoto | Quais hosts remotos (resolvidos) você está trocando mais dados |
As taxas são mostradas como throughput atual para cima (▲) e para baixo (▼), atualizadas cerca de uma vez por segundo.
Fluxos de Trabalho Comuns
# "O que está comendo meu upload agora?" — apenas processos, sem lag de DNS
sudo bandwhich -p -n
# Investiga uma interface barulhenta e registra um stream bruto para análise posterior
sudo bandwhich -i eth0 --raw | tee bandwhich-eth0.log
# Snapshot único da utilização total (scripts/cron)
sudo bandwhich --total-utilization -n
# Encontra os principais conversadores remotos (ex: exfiltração ou trabalho de backup)
sudo bandwhich -a
bandwhich vs Outros Monitores de Rede
| Ferramenta | Granularidade | Notas |
|---|
| bandwhich | Processo + conexão + host remoto | TUI Rust, resolve remotos |
| nethogs | Por processo | Sem agrupamento de host remoto |
| iftop | Por conexão | Sem atribuição de processo |
| nload | Por interface totais | Gráfico agregado simples |
| iptraf-ng | Por interface/conexão | Suite ncurses mais antiga |
Recursos