Sé que usando el comando:
lsof -i TCP
(o alguna variante de parámetros con lsof) Puedo determinar qué proceso está vinculado a un puerto en particular. Esto es útil, por ejemplo, si estoy tratando de comenzar algo que quiere vincularse a 8080 y alguien más ya está usando ese puerto, pero no sé qué.
¿Hay una manera fácil de hacer esto sin usar lsof? Paso mucho tiempo trabajando en muchos sistemas y lsof a menudo no está instalado.
networking
process
tcp
lsof
Gilles
fuente
fuente
netstat -p
arriba está mi voto. También miralsof
.En AIX, netstat & rmsock se pueden utilizar para determinar el enlace del proceso:
fuente
Otra herramienta disponible en Linux es ss . Desde la página de manual de ss en Fedora:
Ejemplo de salida a continuación: la columna final muestra el enlace del proceso:
fuente
Para Solaris puede usar pfiles y luego grep por
sockname:
oport:
.Una muestra (de aquí ):
fuente
Una vez tuve que tratar de determinar qué proceso estaba detrás de un puerto en particular (esta vez era 8000). Probé una variedad de lsof y netstat, pero luego me arriesgué e intenté acceder al puerto a través de un navegador (es decir, http: // hostname: 8000 / ). He aquí, una pantalla de bienvenida me saludó, y se hizo evidente cuál era el proceso (para el registro, fue Splunk ).
Un pensamiento más: "ps -e -o pid, args" (YMMV) a veces puede mostrar el número de puerto en la lista de argumentos. Grep es tu amigo!
fuente
telnet hostname 8000
ver si el servidor imprime un banner. Sin embargo, eso es sobre todo útil cuando el servidor se ejecuta en una máquina donde no tiene acceso de shell, y luego encontrar el ID del proceso no es relevante.