Tentando usar com o privilégio sudo. Alguns processos não serão mostrados se o comando não for executado com privilégio de sudo.
Eu escrevi um script baseado em lsof para monitorar o soquete em uso para cada processo do meu aplicativo em particular (um soquete por processo). Quando eu especificar a opção -i para limitar a lista de arquivos abertos para soquetes, alguns processos desaparecem.
Deixe pid_list ser uma lista constante e corretamente formatada, separada por vírgulas, de 136 processos. Por que o resultado às vezes é inferior a 136?
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
135
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
134
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
136
O problema pode ser reproduzido com apenas 1 pid.
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
### OOPS!!!
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
Os processos são executados sem interrupção. Cada processo tem um soquete que está no estado LISTEN ou ESTABLISHED. Soquetes são IPv4. Isso está no RHEL 5.11 com lsof 4.78.
Omitir a opção lsof -i
sempre exibirá o número correto de processos. Mas essa saída é inutilizável para os meus propósitos como eu preciso dos números de ip e porta de todos os processos.
Os processos omitidos por lsof parecem ser aleatórios. Eles nunca são os mesmos.
Eu suspeito que o lsof é sensível a alguma coisa, mas o que ?
EDIT 2016-07-26
Eu tentei usar o netstat como uma solução alternativa e encontrei o mesmo problema. O problema pode ser específico do meu aplicativo ou de uma combinação do que meu aplicativo faz com as restrições do sistema operacional. Algo impede que o lsof / netstat relate adequadamente.
Tentando usar com o privilégio sudo. Alguns processos não serão mostrados se o comando não for executado com privilégio de sudo.