■ espacio · carril de prosa

■ the answer first la respuesta primero

Usa ss — el estándar actual en toda distro Linux moderna; netstat es legado ahí y a menudo ni siquiera está instalado.

Los flags se traducen uno a uno: netstat -tlpn → ss -tlpn, netstat -tulpna → ss -tulpna. Enrutado e interfaces se mudaron a ip route / ip -s link.

Caza de puertos en una línea: sudo ss -ltnp 'sport = :8080' — el nombre del proceso y el PID vuelven directamente.

EL RUNBOOK TRADUCIDO

Cada línea netstat de tu runbook viejo, y en qué se convierte — lee cada fila de izquierda a derecha:

TCP en escucha + procesonetstat -tlpn→todas las conexiones TCP + UDP
all TCP + UDP connectionsnetstat -tulpna→ss -tulpna
tabla de enrutadonetstat -r→ip route
estadísticas de interfacesnetstat -i→ip -s link
resumen de sockets del kernel— netstat no tiene respuesta —→ss -s
filtrar por puerto, dentro del kernelgrep-y-rezar→ss -tnp 'sport = :22'

las dos primeras filas son idénticas — por suerte, los flags cortos de ss coinciden con los de netstat en los casos comunes, así que la memoria muscular sobrevive en gran parte a la mudanza

¿ESTÁ NETSTAT OBSOLETO?

En Linux, en la práctica sí. El paquete net-tools — netstat, ifconfig, route — has not tracked modern kernel features for years and is no longer installed by default on any major distribution. It still exists, still runs, and there is nothing to uninstall, but new features land only in iproute2 (the package behind ss and ip — lleva años sin seguir las funciones modernas del kernel y ya no viene instalado por defecto en ninguna distribución grande. Sigue existiendo, sigue corriendo, pero las funciones nuevas solo aterrizan en

Tres consecuencias prácticas:
  1. Ausente en instalaciones frescas. Un Ubuntu 24.04 o servidor Fedora por defecto no tiene ningún netstat hasta que instales net-tools a mano — por eso tanta gente busca "el equivalente de netstat": el binario simplemente se fue.
  2. Sin información moderna de sockets. netstat es anterior a TCP fast open, a las estadísticas de sockets por subflujo y a la atribución de sockets por cgroup. ss las reporta de forma nativa.
  3. La excepción Windows. En Windows, netstat está vivo y coleando — netstat -ano sigue siendo la forma estándar de mapear un PID a un puerto en escucha. Solo la historia Linux es deprecación.

EL CABALLO DE BATALLLA, FLAG A FLAG

significa "socket statistics": la visión del kernel de cada socket TCP, UDP y Unix — estados, direcciones, puertos, procesos, timers, profundidades de cola. means "socket statistics": the kernel's view of every TCP, UDP and Unix socket — state, addresses, ports, processes, timers, queue depths.

# todo lo que está en escucha, con el proceso dueño
sudo ss -tulpn

Flag a flag: TCP (-t), UDP (-u), solo escucha (-l), mostrar procesos (-p), salida numérica — sin consultas DNS (-n). El sudo importa para -p : sin root ves los puertos pero no obtienes nombres de proceso de sockets que no te pertenecen. Dos one-liners más que cubren la mayor parte del trabajo:

# todas las conexiones establecidas hacia/desde el puerto 443, con procesos
sudo ss -tnp 'sport = :443 or dport = :443'

# tabla resumen: cuántos sockets en cada estado
ss -s

Esa sintaxis de filtro es una mejora genuina frente al grep-y-rezar de netstat — corre dentro del kernel, así que es exacta en vez de por coincidencia de texto.

¿QUIÉN TIENE EL PUERTO 8080?

La razón más común para llegar a cualquiera de las dos herramientas:

sudo ss -ltnp 'sport = :8080'
State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
LISTEN  0       511     *:8080              *:*               users:(("node",pid=214113,fd=18))

El campo users:(...) te da el nombre del proceso y el PID directamente — sin necesidad de un segundo comando. ¿Puerto ocupado pero no aparece proceso? Normalmente estás mirando un socket en manos de otro namespace de red — un contenedor. Desde el host, sudo ss -ltnp shows the port with an empty process column; match it with docker ps or nsenter into the container's namespace. Prefer a dedicated tool? hace el mismo trabajo y funciona igual en macOS y la mayoría de BSD, por eso sobrevive en los runbooks — pero en Linux, does the same job and works identically on macOS and most BSDs, which is why it survives in runbooks — but on Linux, ya está ahí. is already there.

verifica: sudo ss -ltnp 'sport = :8080' → users:(("node",pid=…)) · cambia a cualquier puerto 1–65535

¿POR QUÉ "ss NOT FOUND"?

Porque o estás en una distro muy vieja (era pre-2007, antes de que iproute2 fuera estándar) o — mucho más probable — no estás en Linux en absoluto. ss no es un comando de macOS; macOS trae lsof and netstat pero no ss, igual la mayoría de los BSD. En Windows: netstat -ano or PowerShell's de PowerShell. Si de verdad estás en Linux y falta, instala iproute2: . If you genuinely are on Linux and it is missing, install iproute2: sudo apt install iproute2 (Debian/Ubuntu) or sudo dnf install iproute2 (Fedora/RHEL).

verifica: ss -V → una cadena de versión en la primera línea

CUANDO NETSTAT AÚN GANA SU FILA

Dos casos honestos. Portabilidad: en una flota mixta de Linux, AIX o BSD viejos, netstat es la única sintaxis presente en todas partes. Continuidad de la memoria muscular en runbooks viejos — si un runbook dice netstat -tlpn y la caja tiene net-tools instalado, sigue funcionando bien. En otro caso, por defecto ss y actualiza el runbook — la tabla de traducción de arriba es la que merece estar pegada en tu monitor. Y cuando el puerto que encuentras pertenece a un servicio que no arranca, esa es una historia de systemd, no de sockets.

■ sello honesto Probado en: Ubuntu 24.04 · Fedora · Debian · iproute2 ss · netstat de Windows -ano. Publicado por primera vez 2026-09-05, ficha refrescada 2026-10-04. Cada comando es comportamiento estándar de iproute2/net-tools corrido tal cual está impreso; la salida ss -ltnp de ejemplo de arriba es una captura real de una caja de desarrollo (un proceso node en :8080), re-tecleada, no inventada.

fin del runbook traducido · nada descargado · todo local