time_wait sintaxis resultados redes puertos para los conexiones comandos cerrar aplicaciones analizar abiertos linux parsing bash

linux - resultados - sintaxis de netstat



¿Cómo analizar el comando netstat para obtener el nombre del proceso y el PID? (7)

Estoy tratando de determinar qué aplicación está usando cierto puerto y obtener netstat -tlnp | grep <port> for Linux netstat -tlnp | grep <port> for Linux .

Este comando devuelve la siguiente salida:

(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:<port> 0.0.0.0:* LISTEN 3591/java

Necesito obtener en el resultado solo el nombre del proceso y el PID, es decir, java 3591.

¿Cuál es la mejor manera de hacerlo?

Gracias.


(Detractando ligeramente de su pregunta original), para averiguar qué proceso escucha un determinado número de puerto, generalmente uso el comando lsof . Por ejemplo:

lsof -i tcp:80

Para mostrar solo el nombre del proceso y el PID, analice la salida utilizando:

lsof | tail -n +2 | awk ''{print $1 " " $2}''

El comando tail omite el encabezado de salida, mientras que awk imprime las columnas requeridas.

Por que lsof

Tratar de grep la salida de netstat puede ser complicado ya que tendrás que asegurarte de que coincida con la columna correcta. Una solución robusta puede ser bastante larga y difícil (para mí de todos modos) producir bajo demanda.

lsof ahorra la molestia de hacer coincidir los puertos correctos y también tiene muchos otros usos, por ejemplo, lo inverso de lo que estamos haciendo ahora (descubra qué puertos está utilizando un proceso), o determinar qué proceso está usando un archivo / punto de montaje (o el inverso). Vea la página de manual de lsof para más ejemplos.


Prueba netstat -p

-p, --programa Muestra el PID y el nombre del programa al que pertenece cada socket.


También puedes deshacerte de ese mensaje "tienes que ser root" redirigiendo stderr a / dev / null

netstat -tlnp 2>/dev/null | grep ...


Tratar

ps -p $(lsof -ti tcp:80) o comm=,pid=

o

netstat -tlnp | awk ''/:80 */ {split($NF,a,"/"); print a[2],a[1]}''


awk + sed:

awk ''{print $7}'' | sed "s//// /g"


... | awk ''{print $7;}''| sed ''s//// /g''


netstat -tlnp 2>/dev/null | awk ''//.[0-9]:X/ {print $7}'' | sed ''s/////s/g''

donde X en el bit awk es el puerto que estás mirando.