Mate todos os processos ligados a uma porta

0

Mate todos os processos na porta 3000. Isso é o que é tentado:

ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      0          632007      18200/node      
ubuntu@111:~/chatapp$ sudo kill 18200
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      0          632207      18349/node      
ubuntu@111:~/chatapp$ sudo killall node
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      0          632364      18414/node      
ubuntu@111:~/chatapp$ 
    
por Himani Agrawal 01.04.2016 / 13:25

3 respostas

1

Você pode usar o seguinte comando para obter apenas pid :

sudo netstat -peanut | grep 3000 | awk '{ print $9 }' | sed 's:/[^/]*$::' | grep -Eo '[0-9]{1,5}'
O comando

awk obtém o 9º campo.

O comando

sed obtém o pid antes da barra.

O comando grep retorna apenas números para eliminar linhas extras.

Aqui você pode simplesmente ter um loop e matar processos.

    
por Mahdi 01.04.2016 / 13:53
0

Alguns programas não serão exibidos, a menos que você execute netstat com o sudo. Compare essas duas execuções:

$ netstat -natp | grep tcp6                                                                           
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::25                   :::*                    LISTEN      -               
tcp6       0      0 :::445                  :::*                    LISTEN      -               
tcp6       0      0 :::139                  :::*                    LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN 



$ sudo netstat -natp | grep tcp6                                                                      
[sudo] password for xieerqi: 
tcp6       0      0 :::25                   :::*                    LISTEN      1522/master     
tcp6       0      0 :::445                  :::*                    LISTEN      770/smbd        
tcp6       0      0 :::139                  :::*                    LISTEN      770/smbd        
tcp6       0      0 :::22                   :::*                    LISTEN      1190/sshd 

Como para matar o processo ligado a uma porta em si, é um caso simples de analisar a saída de netstat (que o awk pode fazer) e canalizar a saída desse comando para xargs -I {} kill -TERM {} .

Veja como se pode analisar a saída com awk . Por padrão o awk usa espaços para dividir a saída em campos, então eu tenho que percorrer todos os campos (por causa dos múltiplos espaços, o awk acha que há vários campos entre o texto real).

$ sudo netstat -natp | awk '/:53579/{sub(/\//," ");for(i=1;i<=NF;i++){\                                    
> if($i~/ESTABLISHED/||/LISTEN/||/CLOSE WAIT/) print $(i+1)}}'                                                        
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
5027

O resto será apenas

that_command_above | xargs -I {} kill -TERM  {}
    
por Sergiy Kolodyazhnyy 05.04.2016 / 01:16
-1

use killport

killport pode ser baixado aqui usando isto:

wget https://raw.githubusercontent.com/abdennour/miscs.sh/master/killport

sh killport 3000

Outra maneira pode ser usar isso:

sudo kill -9 3000

    
por bhordupur 01.04.2016 / 14:33