Tente usar netstat
com rmsock
.
port=$1
addr='netstat -Aan | grep $port | awk '{print $1}'
pid='rmsock $addr tcpcb | awk '{print $9}''
ps -ef | grep $pid
Para netstat
, o -A
mostra o endereço de qualquer bloco de controle de protocolo associado aos soquetes, a opção -a
mostra o estado de todos os soquetes, incluindo os processos do servidor, e a opção -n
fornece saída em formato numérico, então você não está perdendo tempo tentando resolver endereços.
rmsock
, usando o endereço fornecido na saída column1 de netstat
e usando o banco de dados tcpcb
, retornará informações sobre o processo que contém esse soquete, incluindo o pid e o nome.
Você pode usar ps -ef | grep $pid
para obter as informações do processo.
Você pode ver artigo na IBM Systems Magazine para obter mais informações sobre isso.