Qual é a diferença entre 'lsof -p pid | wc -l 'e' ls / proc / pid / fd | wc -l '?

10

Background: Estou brincando com o monitoramento do ulimit para a execução de processos para um usuário específico. (Eu tinha ocasionalmente visto processos que estavam começando com um limite incorreto.) Perguntei a alguns gurus do Linux autodeclarados, e um sugeriu lsof -p <pid> , enquanto o outro sugeriu ls /proc/<pid>/fd , mas nenhum deles foi positivo sobre o que reflete com mais precisão a contagem real para o limite máximo de arquivos abertos para um processo.

Então, qual é?

lsof -p <pid> | wc -l

Ou

ls /proc/<pid>/fd | wc -l

Por favor, explique sobre a diferença. Obrigado!

    
por Jared 22.10.2011 / 00:53

1 resposta

8

lsof também lhe dará arquivos .so mapeados na memória - o que tecnicamente não é o mesmo que um manipulador de arquivos que o aplicativo controla. /proc/<pid>/fd é o ponto de medição para descritores de arquivos abertos - no entanto: Mencionado na página proc-man - se o thread principal de um programa multiencadeado tiver terminado, este diretório não estará disponível.

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -l mostrar-lhe-á os mesmos itens que ls /proc/<pid>/fd | wc -l .

Os mapas de memória estão disponíveis em /proc/<pid>/maps .

    
por 22.10.2011 / 01:04