Como posso matar um processo em execução em um IP e porta específicos? [fechadas]

1

Eu queria saber, existe alguma maneira de matar um processo que está sendo executado em uma porta IP e específica no Ubuntu 14.04 em um IP local e porta? De preferência, isso seria em um comando, mas se não, um script bash seria perfeitamente bem também.

    
por Stephen Pierre-Paul 17.05.2017 / 21:32

5 respostas

6

Existem maneiras provavelmente mais limpas, mas algo como:

netstat -lnp | grep 'tcp .*127.0.0.1:9984' | sed -e 's/.*LISTEN *//' -e 's#/.*##' | xargs kill
    
por 17.05.2017 / 21:43
5

Usando ss , podemos obter detalhes do processo / conexões que estão escutando em um IP e porta específicos, para src 127.0.0.1 e port 80 :

sudo ss -lp  '( dport = :80 )' src 127.0.0.1

então, só podemos obter PID usando grep e eliminá-los usando xargs e kill .

sudo ss -lp  '( dport = :80 )' src 127.0.0.1 | grep -Po "(?<=pid=).*(?=,)"\
| sort | uniq | xargs kill

Você também pode usar a opção -a em vez de -l para obter uma lista de todos os sockets de escuta e de não escuta.

    
por 17.05.2017 / 22:24
3

fuser no Linux tem uma opção que faz exatamente o que você está procurando fazer.

Por exemplo, fuser 80/tcp imprimirá o PID do processo vinculado a essa porta e fuser -k 80/tcp eliminará esse processo.

    
por 18.05.2017 / 01:08
1

No linux, como root , você pode usar

ss -ptan 

ou

netstat -ntulp

para obter uma lista de todos os processos em execução que "escutam" (neste caso, tcp, substitua o "t" por "u" para o udp).

Então, um liner, para matar o processo de escuta na porta 80, seria algo assim:

ss -tanp | grep 80 | head -1 | sed 's_.*pid=\(.*\),.*__' | xargs kill
    
por 17.05.2017 / 21:52
-1

O único IP em que um processo na máquina local pode ser executado é 127.0.0.1 , lo , o dispositivo de loopback, conhecido como localhost . As portas podem ser encaminhadas para um endereço IP público com configurações de rede.

Normalmente, uso sudo lsof -i :<port> para ver o que está causando uma EADDRINUSE porque é mais rápido para digitar.

sudo lsof -i :443 | tail -1 | cut -f2 -d' ' | xargs kill

Matará o processo em execução na porta 443, se o seu lsof fornecer resultados como:

COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
python3 32233  cat    4u  IPv4 24123106      0t0  TCP *:http-alt (LISTEN)

De lsof --help :

-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]
    
por 18.05.2017 / 02:11