ss -tulpn es el reemplazo directo de netstat -tulpn, y ya está instalado. netstat venía en net-tools, un paquete que los sistemas mínimos y las imágenes de contenedor dejan fuera a propósito: instalarlo es tratar el síntoma. El enrutamiento también se mudó: netstat -r ahora es ip route.
1. Por qué desapareció el comando
$ clai muestra los puertos a la escucha→ netstat -tulpnbash: line 1: netstat: command not found
net-tools lleva años sin mantenimiento, así que las imágenes ligeras lo descartan. Dentro de un contenedor apt-get install net-tools suele responder E: Unable to locate package net-tools: no hay nada que instalar ni nada que echar de menos, porque ss viene con iproute2, que sí está.
2. El reemplazo directo de netstat -tulpn
$ clai muestra qué está escuchando en el puerto 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))
Los flags son los mismos de siempre: -t tcp, -u udp, -l a la escucha, -p proceso, -n sin resolver nombres. Lo nuevo es 'sport = :8099': un filtro que evalúa el propio ss en lugar de un grep sobre la salida.
3. Mira quién está conectado de verdad
$ clai muestra las conexiones en el puerto 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
netstat no tenía lenguaje de filtros, así que todo acababa en una tubería a grep. Aquí state established, state time-wait, dport y sport se combinan con and y or.
4. Un resumen en lugar de netstat -s
$ clai muestra un resumen del uso de sockets→ ss -sTotal: 2161TCP: 190 (estab 58, closed 108, orphaned 0, timewait 29)
La primera línea cuenta todos los sockets de la máquina; la segunda desglosa TCP por estado. Un timewait alto es normal; un orphaned alto es motivo para ir a mirar la aplicación.
5. A netstat -r lo sustituye ip, no ss
$ clai muestra la tabla de rutas→ ip routedefault via 172.17.0.1 dev eth0 172.17.0.0/16 dev eth0 scope link src 172.17.0.2
Rutas, interfaces y direcciones se mudaron a ip: netstat -r es ip route, netstat -i es ip -s link e ifconfig es ip addr. Con ss solo se quedaron los sockets.
6. La tabla de traducción completa
$ clai enumera el equivalente en ss de cada flag de netstat que 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 líneas cubren todo lo que la mayoría llegó a teclear en netstat. Si ss -s te sabe a poco, nstat da los contadores largos por protocolo.
Gotchas
- Sin root la columna Process aparece vacía para procesos ajenos. Tus propios sockets siempre muestran
users:(("name",pid=…)); el resto requieresudo. Un Process vacío en un puerto ocupado casi siempre significa "no es tu proceso", no "no hay proceso". - No existe modo continuo. netstat tenía
-cpara repetir cada segundo;ss --helpno lista nada parecido. Repite desde fuera:watch -n1 'ss -tan'. - Los paréntesis del filtro hay que entrecomillarlos.
ss -tan 'sport = :8099'funciona incluso sin comillas, porque el shell pasa tres palabras tal cual. Peross -tan ( sport = :8099 )ni siquiera llega a ss: el shell muere consyntax error near unexpected token '('. Entrecomilla la expresión entera y olvídate.
Related questions
¿Y si necesito netstat de verdad? sudo apt install net-tools lo devuelve en un sistema completo, pero en imágenes ligeras el paquete no existe. Aprender seis líneas de la tabla es más corto.
¿Cómo veo el ancho de banda por proceso? ss muestra conexiones, no velocidad. Para caudal necesitas nethogs o los contadores de /proc/<pid>/net/dev.
¿La forma más corta de ver quién ocupa un puerto? ss -tulpn | grep :8099, cuando no te apetece recordar la sintaxis de filtros.
See also
- Comprobar si un puerto está abierto
- Comandos de Windows y su equivalente en Linux
- Medir la latencia de una API con curl
CliAI escribe el filtro de ss por ti mientras tus dedos siguen escribiendo netstat, y muestra el comando antes de ejecutarlo. Instálalo en una línea.