Come trovo (e uccido) il processo in esecuzione su una determinata porta? [duplicare]


Risposte:


47

È possibile utilizzare lsofper trovare il processo:

lsof -t -i:4444

elencherebbe solo il pid del processo in ascolto sulla porta 4444. Si potrebbe semplicemente dire

kill `lsof -t -i:4444`

se tu fossi coraggioso.


14
+1 per "se fossi coraggioso".
Mr. Shickadance,

7

Tu usi lsof:

# lsof -n | grep TCP | grep LISTEN | grep 4444

L'output sarà simile a:

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

Dove la prima colonna è il nome del processo e la seconda colonna è l'id del processo. Quindi si analizza l'output, si scopre qual è l'ID di processo (PID) e si usa il killcomando per ucciderlo.


1
Non ne avevo mai sentito parlare prima. Guardando la pagina man, sembra essere incredibilmente utile. Grazie!

tutto in linux è un file e lsof ti permette di trovare i file quindi ... sì, molto utile
jcollum

2

In alternativa puoi usare netstat -apse lsofnon è disponibile sul tuo sistema (dato che non lo è su un sistema busybox con cui lavoro regolarmente).


buona telefonata, mi chiedevo perché non funzionasse su un'immagine docker derivata da busybox a cui stavo lavorando
jcollum

2
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

Utilizza netstat per elencare i socket INET in ascolto con porte numeriche e processi parent. Filtra per la stringa 4444, estrae la settima colonna (nome pid / processo) e la divide ulteriormente per "/" per ottenere il pid. Passa quello per uccidere il comando.


2
Consiglierei contro l'uccisione -9. Non consente la pulizia e alcune app Internet hanno maggiori probabilità di disporre di risorse che devono essere chiuse in modo pulito.
Rich Homolka,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.