CLI AI

netstat: command not found — usa ss en su lugar

2026-07-16

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
$ 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
$ 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
$ 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
$ 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
$ 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
$ 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 requiere sudo. 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 -c para repetir cada segundo; ss --help no 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. Pero ss -tan ( sport = :8099 ) ni siquiera llega a ss: el shell muere con syntax 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

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.