GNU/Linux >> Linux Esercitazione >  >> Linux

Uccidi il processo in esecuzione sulla porta 80

Ci sono diversi modi per scoprire quale processo in esecuzione sta usando una porta.

Utilizzando fuser fornirà i PID delle istanze multiple associate alla porta di ascolto.

sudo apt-get install psmisc
sudo fuser 80/tcp

80/tcp:               1858  1867  1868  1869  1871

Dopo averlo scoperto, puoi interrompere o terminare il/i processo/i.

Puoi anche trovare i PID e altri dettagli usando lsof

sudo lsof -i tcp:80

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  

Limitare ai socket che ascoltano sulla porta 80 (al contrario dei client che si connettono alla porta 80):

sudo lsof -i tcp:80 -s tcp:listen

Per ucciderli automaticamente:

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill

Ecco un oneliner che mostra il comando da eseguire :

echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')

Sostituisci echo di sudo affinché il processo venga effettivamente interrotto.


Tre opzioni per elencare le porte aperte sono offerte in whatisonport di jsh :

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

Preferisco netstat perché è veloce, conciso e può elencare le porte aperte da altri utenti. (Anche se saranno comunque necessari i privilegi di superutente/utente per elencare i nomi e i PID di tali processi.)

Uscite

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

L'uso di grep in due casi è abbinare solo la porta sul lato locale e saltare le connessioni aperte a una porta remota 80. (Un'alternativa sarebbe usare -l con netstat o con lsof per usare -sTCP:LISTEN , ma mi piacciono i grep sopra perché cattureranno anche in uscita connessioni da la porta specificata, che occasionalmente può essere interessante.)

Con lsof usiamo -P per visualizzare :80 invece di :http per rendere possibile il grep. Il -S 2 l'opzione forza lsof da completare in modo tempestivo.

Uccidere il processo

Supponendo di voler utilizzare netstat , potremmo prendere i PID in questo modo:

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

E potremmo persino passare quei PID a kill :

... | xargs -d '\n' kill -KILL

Tuttavia c'è spesso un potenziale falso positivo quando si usano le espressioni regolari, quindi consiglierei di guardare solo l'output iniziale di netstat e poi decidere manualmente se eseguire o meno:

$ kill -KILL 1914

Vedi anche

Ho un altro script chiamato listopenports che potrebbe essere di interesse.


Linux
  1. Cambiare l'ambiente di un processo in esecuzione?

  2. Linux:trovare il Pid del processo utilizzando una porta specifica?

  3. Come uccidere un processo in esecuzione su una porta specifica in Linux?

  4. kill Esempi di comandi in Linux

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

Come uccidere un processo in Linux

Kill Command in Linux

Come trovare e uccidere i processi in esecuzione in Linux

Come eliminare l'esecuzione del processo Linux su una porta particolare

Come KILL un processo su Linux

Processi in esecuzione