Estoy instalando hadoop en mi sistema Ubuntu. Cuando lo inicio, informa que el puerto 9000 está ocupado.
Solía:
netstat -nlp|grep 9000
para ver si existe ese puerto y obtuve esto:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
Pero, ¿cómo puedo obtener el PID del proceso que lo retiene?
netstat
El comando podría funcionar en muchos sistemas operativos para permitirle obtener eso, solo tiene que encontrar los argumentos que garanticen que mostrará pids a lo largo de cada puerto abierto conocido.Respuestas:
En Linux, debe ser root o el propietario del proceso para obtener la información que desea. Como tal, para los procesos que se ejecutan como otro usuario, la preparación previa
sudo
es la mayoría de lo que necesita. Además de eso, en los sistemas Linux modernos,ss
es una herramienta para usar para hacer esto:También puede usar la misma invocación que está usando actualmente, pero recuerde
sudo
:También puedes usar lsof:
fuente
-p
opción es para protocolo en lugar de proceso. Ver esta preguntaFinding the PID of the process using a specific port
sudo
en la parte superior.lsof -ti tcp:80
También puedes usar la
lsof
utilidad. Necesito ser root.fuente
established
conexiones, no solo procesos que sonlistening
.lsof -i :25 -Fp
que produce resultados similaresp1234
.Estoy usando "CentOS 7 minimal" que no tiene ni
netstat
ningunolsof
. Pero muchas distribuciones de Linux tienen el comando de estadísticas de socket (es decirss
).Aquí hay un ejemplo de ejecución:
fuente
ss -pntl 'sport = :6379'
Ejecutar el comando con
sudo
le daría elPID
. En mi máquina de desarrollo obtengo:Y como se menciona en otras respuestas, también puede usar
ss
loslsof
comandos o .fuente
sudo
ID de proceso de visualizaciónsudo netstat -nlp | grep 34157
todavía se muestra en-
lugar de PID?También puedes usar
fuser
:La salida :
fuente
sudo
si el proceso ofensivo también se inició consudo