Como faço para encontrar (e matar) o processo em execução em uma determinada porta? [duplicado]

28

Estou usando o Ubuntu Linux 11.04. Como escrevo uma expressão de script de shell que encontrará o processo em execução na porta 4444 e, em seguida, eliminará o processo?

    
por Community 12.08.2011 / 15:15

4 respostas

46

Você pode usar lsof para encontrar o processo:

lsof -t -i:4444

listaria apenas o pid do processo escutando na porta 4444. Você poderia apenas dizer

kill 'lsof -t -i:4444'

se você fosse corajoso.

    
por 12.08.2011 / 15:20
6

Você usa lsof :

# lsof -n | grep TCP | grep LISTEN | grep 4444

A saída será algo como:

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

Onde a primeira coluna é o nome do processo e a segunda coluna é o id do processo. Você então analisa a saída, descobre qual é o ID do processo (PID) e usa o comando kill para eliminá-lo.

    
por 12.08.2011 / 15:19
2

Como alternativa, você pode usar netstat -ap se lsof não estiver disponível em seu sistema (pois não está em um sistema busybox com o qual eu trabalho regularmente).

    
por 12.08.2011 / 15:23
2
kill -9 'netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}''

Usa o netstat para listar sockets de entrada do INET com portas numéricas e processos pai. Filtros para a string 4444, tira a 7ª coluna (pid / nome do processo) e divide-a ainda por "/" para obter o pid. Passa isso para matar o comando.

    
por 12.08.2011 / 15:40