Como saber quantos arquivos um processo abriu com eficiência?

1

Eu sei que posso usar o comando

lsof -p xxxx | wc -l

para saber a contagem de arquivos abertos em um processo, ele funciona, mas, no entanto, é muito ineficiente. Eu tenho algum processo do servidor que tem muitos arquivos de soquete, o método wc -l nunca retorna o resultado. Então, qual é a maneira eficiente de saber quantos arquivos são abertos em um processo?

Obrigado.

    
por Fang-Pen Lin 10.06.2010 / 16:18

3 respostas

1

Existe uma interface proc para arquivos abertos: / proc / PID / fd /. É um diretório de links simbólicos. Todos os sockets abertos parecerão estar ligados a um ficheiro com o nome "socket: [INODE NUMBER]"

    
por 10.06.2010 / 18:11
0

Use ps -C <progname> -o pid= | wc -l onde progname é o nome do processo em ps -listing.

    
por 10.06.2010 / 16:28
0

Algum contexto (cenários de caso de uso) pode fornecer uma melhor direção para respostas.

A documentação do lsof descreve alguns métodos que ele chama que podem bloquear por tempo indesejável. Eu sugeriria dar uma olhada na seção BLOCKS AND TIMEOUTS da lsof página do manual

.

Você pode tentar o seguinte e ver se ele fornece resultados desejáveis:

lsof -bwp $pid | wc -l
    
por 10.06.2010 / 19:38