2012-02-19 19 views
217

Sto provando ad uccidere un processo nella riga di comando per una porta specifica in ubuntu.Come uccidere un processo su una porta su ubuntu

Se corro questo comando ottengo il porto:

sudo lsof -t -i:9001 

così ... ora voglio correre:

sudo kill 'sudo lsof -t -i:9001' 

ricevo questo messaggio di errore:

ERROR: garbage process ID "lsof -t -i:9001". 
Usage: 
    kill pid ...    Send SIGTERM to every process listed. 
    kill signal pid ...  Send a signal to every process listed. 
    kill -s signal pid ... Send a signal to every process listed. 
    kill -l     List all signal names. 
    kill -L     List all signal names in a nice table. 
    kill -l signal   Convert between signal numbers and names. 

Ho provato anche sudo kill 'lsof -t -i:9001'

+3

FYI, le domande su Ubuntu hanno una migliore possibilità di risposta sulla parte Ubuntu della rete StackExchange (StackOverflow): http://askubuntu.com – JScoobyCed

risposta

360

Si desidera utilizzare backtick tick non regolare:

sudo kill `sudo lsof -t -i:9001` 

Se questo non dovesse funzionare si potrebbe anche utilizzare $() per il comando di interpolazione:

sudo kill $(sudo lsof -t -i:9001) 
+15

Hai dimenticato di aggiungere l'opzione di segnale. Dovresti leggere: 'sudo kill -9 $ (sudo lsof -t -i: 9001)' –

+5

@FrancescoGramano: non vuoi usare -9 a meno che non sia necessario. – zellio

+0

quando 'sudo kill' non può uccidere il processo, il metodo di @ putra.koreng funziona bene – Fangxin

114

è possibile utilizzare

fuser -n tcp -k 9001 

see more details in wikipedia

+0

Non dovrebbe essere 9001 invece di 900? – Potherca

+1

Se non root: sudo fuser -n tcp -k 9001 – JLavoie

+0

e deve essere mostrato in questo modo ([3] + Ucciso) –

16

Utilizzare il comando killport:

sh killport 9001 

per scaricare shell, è possibile utilizzare wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport 
+1

Non funziona sempre – itsazzad

+1

se non funziona, significa che la porta di destinazione è già chiusa –

25

Ci sono alcuni processi che non dimostrata utilizzando il comando netstat normale, quindi bisogna controllare tramite sudo.

Do sudo netstat -lpn |grep :8080. Processo in esecuzione per sistema non mostra PID, per ottenere PID di questo processo sarà necessario eseguirlo utilizzando sudo

E quindi killl il processo utilizzando la porta 8080. Potrebbe essere necessario utilizzare sudo anche qui. Quindi, per uccidere utilizzare questo processo sudo kill -9 PID

33

per Ubuntu 1- Trovare quale applicazione/processo sta utilizzando il pro, tipo:

sudo netstat -lpn |grep :8080 

e premere Invio.

Si otterrà un output simile a questo

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

2- Ho avuto il processo di identificazione, che è 6782, ora questo è il processo che utilizza la porta 8080.

3- uccidere il processo, digitare: uccidere 6782

kill 6782 
+3

Short e risposta nitida –

5

Utilizzare questa:

sudo kill -9 $(lsof -t -i:9001) 
10

Si può anche utilizzare fusore per farlo (invia SIGKILL per impostazione predefinita): sudo fuser -k 9001/tcp

3

Kill PORT:

sudo è importante per mostrare l'ID del processo.

$ sudo netstat -antlp | grep 45136 
tcp  0  0 0.0.0.0:45136   0.0.0.0:*  LISTEN   **-** 

$ kill -9 45136 
1
sudo kill `sudo lsof -t -i:9001` 

non si deve aggiungere l'opzione segnale

+0

Si tratta di una ripetizione di [questa risposta esistente] (http://stackoverflow.com/a/9346231)? – Pang

2

Utilizzare questo per il processo che è in esecuzione sulla porta numero uccidere "9001"

kill $(lsof -t -i:9001) 
+0

Ridondante con altri esempi, inclusa la risposta accettata. – Kenster

2

Prova questo:

lsof -i :port 

or 

sudo kill $(sudo lsof -t -i:8000) 

or 

kill -9 <pid> 

or 

sh killport 8000 
+0

Sono su Ubuntu 17 e 'kill -9 ' ha funzionato alla grande per me! – protoEvangelion

3

Utilizzare il comando

netstat -plten |grep java 

utilizzato grep java come tomcat utilizza java come loro processi.

Esso mostra l'elenco dei processi con numero di porta e ID processo

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

il numero prima/java è un ID di processo. Ora usa kill command per uccidere il processo

kill -9 16085 

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

5

Il modo migliore per uccidere un porto terminale di Ubuntu è fuser -k 9001/tcp

+0

grazie, ha funzionato per me –

+0

ha funzionato per me, grazie –

1

modo migliore fai che:

per uccidere un processo in esecuzione sul numero di porta 9001

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

lsof - elenco dei file (utilizzato anche per i processi legati lista)

-t - mostrano solo ID di processo

-i - mostra solo le connessioni internet di processo relativi

: 9001 - mostra solo processi in questo numero di porta

kill - comando per uccidere il p rocess

-9 - con forza

sudo - comando per chiedere privilegi di amministrazione (user id e password).

Problemi correlati