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.
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?
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.
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.
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).
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.