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 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 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 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 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 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 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 exigesudo. 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
-cpara repetir a cada segundo; oss --helpnã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. Masss -tan ( sport = :8099 )nem chega ao ss: o shell morre comsyntax 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
- Verificar se uma porta está aberta
- Comandos do Windows e o equivalente no Linux
- Medir a latência de uma API com curl
O CliAI escreve o filtro do ss enquanto seus dedos ainda digitam netstat, e mostra o comando antes de rodar. Instale em uma linha.