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.