Come uccidere un processo in esecuzione su una particolare porta in Linux?

Ho provato a chiudere il tomcat usando ./shutdown.sh dalla ./shutdown.sh tomcat /bin . Ma ho scoperto che il server non è stato chiuso correttamente. E così non sono stato in grado di riavviare
Il mio tomcat è in esecuzione sulla porta 8080 .

Voglio uccidere il processo di tomcat in esecuzione su 8080 . Prima desidero avere l’elenco dei processi in esecuzione su una porta specifica (8080) per selezionare quale processo uccidere.

Questo fuser 8080/tcp stamperà il PID del processo associato su quella porta.

E questo fuser -k 8080/tcp ucciderà quel processo.

Funziona solo su Linux. Più universale è l’uso di lsof -i4 (o 6 per IPv6).

Per elencare qualsiasi processo che ascolta la porta 8080:

 lsof -i:8080 

Per terminare qualsiasi processo ascoltando la porta 8080:

 kill $(lsof -t -i:8080) 

o più violentemente:

 kill -9 $(lsof -t -i:8080) 

Usa il comando

  sudo netstat -plten |grep java 

usato grep java come tomcat usa java come loro processi.

Mostrerà l’elenco dei processi con numero di porta e id di processo

 tcp6 0 0 :::8080 :::* LISTEN 1000 30070621 16085/java 

il numero precedente /java è un ID di processo. Ora usa il comando kill per uccidere il processo

 kill -9 16085 

-9 implica che il processo verrà ucciso con forza.

È ansible utilizzare il comando lsof. Lascia che il numero di porta come qui sia 8090

 lsof -i:8090 

Questo comando restituisce un elenco di processi aperti su questa porta.

Qualcosa di simile a…

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN) 

Per liberare la porta, uccidere il processo che lo utilizza (l’ID processo è 75782) …

 kill -9 75782 

Questo ha funzionato per me. ecco il link dal post originale: link

Vorrei aggiungere questo one-liner solo per LISTEN su una porta specifica:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

Se si desidera terminare un processo in esecuzione sul numero di porta 8080, è necessario prima trovare il numero di identificazione del processo 8080 (PID) e quindi eliminarlo. Eseguire il seguente comando per trovare il numero di porta 8080 PID:

 sudo lsof -t -i:8080 

Qui,

  • sudo – comando per chiedere il privilegio di amministratore (id utente e password).
  • lsof – elenco dei file (utilizzato anche per elencare i processi correlati)
  • -t – mostra solo ID processo
  • -i – mostra solo il processo relativo alle connessioni internet
  • : 8080 – mostra solo i processi in questo numero di porta

Ora puoi facilmente uccidere il tuo PID usando il seguente comando:

 sudo kill -9  

Qui,

  • kill – comando per uccidere il processo
  • -9 – con forza

Puoi usare un comando per uccidere un processo su una porta specifica usando il seguente comando:

 sudo kill -9 $(sudo lsof -t -i:8080) 

Per ulteriori è ansible vedere il seguente link Come uccidere un processo su una porta specifica su Linux

Questo stampa per lo stdout degli ID di processo di tutto ciò che è in esecuzione su :

 fuser -n tcp  

Inoltre stampa alcune cose su stderr, quindi:

 fuser -n tcp  2> /dev/null 

Possiamo quindi fornire questi ID di processo al comando kill :

 sudo kill $(fuser -n tcp  2> /dev/null) 

Puoi anche metterlo in una funzione se lo fai molto:

 function killport() { sudo kill $(fuser -n tcp $1 2> /dev/null) } 

Per conoscere il pid di servizio in esecuzione su una particolare porta:

 netstat -tulnap | grep :*port_num* 

otterrai la descrizione di quel processo. Ora usa kill o kill -9 pid. Facilmente ucciso

per esempio

netstat -ap | grep :8080

 tcp6 0 0 :::8080 :::* LISTEN 1880/java 

Adesso:

 kill -9 1880 

Ricorda di eseguire tutti i comandi come root

prova così,

  sudo fuser -n tcp -k 8080 
  1. lsof -i tcp:8000 Questo comando elenca le informazioni sul processo in esecuzione nella porta 8000

  2. kill -9 [PID] Questo comando uccide il processo

Linux : puoi usare questo comando se conosci la porta:

 netstat -plten | grep LISTEN | grep 8080 

AIX :

 netstat -Aan | grep LISTEN | grep 8080 

Quindi prendi la prima colonna (esempio: f100050000b05bb8) ed esegui il seguente comando:

 rmsock f100050000b05bb8 tcpcb 

termina il processo.

Linux : per prima cosa puoi trovare PID di questo comando se conosci la porta:

 netstat -tulpn 

esempio:-

  Local Address Foreign Address State PID/Program name :::3000 :::* LISTEN 15986/node 

Quindi fai il processo di uccisione. eseguire il seguente comando:

kill -9 PID

Esempio: –

kill -9 15986

kill -9 `fuser 8080/tcp|xargs -n 1` , questo comando uccide anche il processo che ascolta sulla porta 8080 con connessione TCP

build su ciò che @ veer7 ha detto:

se vuoi sapere cosa c’era sul porto, fallo prima di ucciderlo.

 $ sudo netstat -plten |grep java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1000 906726 25296/java tcp6 0 0 :::8009 :::* LISTEN 1000 907503 25296/java tcp6 0 0 :::8080 :::* LISTEN 1000 907499 25296/java $ ps 25296 PID TTY STAT TIME COMMAND 25296 ? Sl 0:16 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dcatalina.base=/hom 

Usa ‘ps’ e il numero del processo che netstat ha riportato

 sudo apt-get install psmisc (or sudo yum install psmisc) sudo fuser 80/tcp 

Risultato: 80 / tcp: 1858 1867 1868 1869 1871

Uccidi il processo uno per uno

uccidi -9 1858

In Windows, sarà netstat -ano | grep "8080" netstat -ano | grep "8080" e otteniamo il seguente messaggio TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076

NOI possiamo uccidere il PID usando taskkill /F /PID 10076