CLI AI

netstat: command not found — use ss no lugar

2026-07-16

ss -tulpn é o substituto direto de netstat -tulpn, e já está instalado. O netstat vinha no net-tools, um pacote que sistemas mínimos e imagens de contêiner deixam de fora de propósito — instalá-lo é tratar o sintoma. O roteamento também mudou de casa: netstat -r agora é ip route.

1. Por que o comando sumiu

clai
$ clai mostre as portas em escuta→ netstat -tulpnbash: line 1: netstat: command not found

O net-tools está sem manutenção há anos, então imagens enxutas o descartam. Dentro de um contêiner, apt-get install net-tools costuma responder E: Unable to locate package net-tools — não há o que instalar nem o que lamentar: o ss vem do iproute2, que está lá.

2. O substituto direto de netstat -tulpn

clai
$ clai mostre quem está escutando na porta 8099→ ss -tulpn 'sport = :8099'Netid State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess                              tcp   LISTEN 0      5          127.0.0.1:8099      0.0.0.0:*    users:(("python3",pid=1034062,fd=3))

Os flags são os mesmos de sempre: -t tcp, -u udp, -l em escuta, -p processo, -n sem resolver nomes. A novidade é 'sport = :8099': um filtro avaliado pelo próprio ss, em vez de um grep sobre a saída.

3. Veja quem está realmente conectado

clai
$ clai mostre as conexões na porta 8099→ ss -tan 'dport = :8099 or sport = :8099'State     Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN    0      5          127.0.0.1:8099      0.0.0.0:*    TIME-WAIT 0      0          127.0.0.1:8099    127.0.0.1:51350

O netstat não tinha linguagem de filtro alguma, então tudo acabava num pipe para grep. Aqui state established, state time-wait, dport e sport se combinam com and e or.

4. Um resumo no lugar de netstat -s

clai
$ clai mostre um resumo do uso de sockets→ ss -sTotal: 2161TCP:   190 (estab 58, closed 108, orphaned 0, timewait 29)

A primeira linha conta todos os sockets da máquina; a segunda separa o TCP por estado. Muitos timewait é normal; muitos orphaned é motivo para ir olhar a aplicação.

5. Quem substitui netstat -r é o ip, não o ss

clai
$ clai mostre a tabela de rotas→ ip routedefault via 172.17.0.1 dev eth0 172.17.0.0/16 dev eth0 scope link  src 172.17.0.2

Rotas, interfaces e endereços foram para o ip: netstat -r é ip route, netstat -i é ip -s link e ifconfig é ip addr. Com o ss ficaram apenas os sockets.

6. A tabela de tradução inteira

clai
$ clai liste o equivalente em ss de cada flag do netstat que eu uso→ ss -tulpn        # netstat -tulpn→ ss -an           # netstat -an→ ss -s            # netstat -s→ ip route         # netstat -r→ ip -s link       # netstat -i→ ip maddr         # netstat -g

Seis linhas cobrem tudo o que a maioria já digitou no netstat. Se ss -s for grosseiro demais, o nstat entrega os contadores longos por protocolo.

Gotchas

  • Sem root a coluna Process fica vazia para processos alheios. Seus próprios sockets sempre mostram users:(("name",pid=…)); o resto exige sudo. Process vazio numa porta ocupada quase sempre significa "não é seu processo", e não "não há processo".
  • Não existe modo contínuo. O netstat tinha -c para repetir a cada segundo; o ss --help não lista nada parecido. Repita por fora: watch -n1 'ss -tan'.
  • Parênteses no filtro precisam de aspas. ss -tan 'sport = :8099' funciona até sem aspas, porque o shell só repassa três palavras. Mas ss -tan ( sport = :8099 ) nem chega ao ss: o shell morre com syntax error near unexpected token '('. Coloque a expressão inteira entre aspas e esqueça o assunto.

Related questions

E se eu precisar mesmo do netstat? sudo apt install net-tools traz ele de volta num sistema completo, mas em imagens enxutas o pacote não existe. Aprender seis linhas da tabela acima é mais curto.

Como vejo banda por processo? O ss mostra conexões, não velocidade. Para vazão você precisa do nethogs ou dos contadores em /proc/<pid>/net/dev.

Qual o jeito mais curto de achar quem segura uma porta? ss -tulpn | grep :8099 — serve quando você não quer lembrar a sintaxe de filtros.

See also

O CliAI escreve o filtro do ss enquanto seus dedos ainda digitam netstat, e mostra o comando antes de rodar. Instale em uma linha.