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
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.
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.
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.
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
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]