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


12

Histórico: estou brincando de monitorar o ulimit para executar processos para um usuário específico. (Ocasionalmente, vi processos que estavam iniciando com um limite incorreto.) Perguntei a alguns gurus do Linux que se professavam e um sugeriu lsof -p <pid>, enquanto o outro sugeriu ls /proc/<pid>/fd, mas nenhum foi positivo sobre o que reflete com mais precisão a contagem real em relação ao máximo limite de arquivos abertos para um processo.

Então, qual é?

lsof -p <pid> | wc -l

Ou

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

Por favor, elabore a diferença. Obrigado!


3
Soa como lição de casa.
precisa saber é o seguinte

1
Não é dever de casa. Adicionado melhor explicação. Eu tinha lido as lsofpáginas de manual e, embora suspeitasse que a resposta fosse arquivos mapeados na memória, queria a confirmação de uma pessoa mais experiente.
Jared

Respostas:


10

lsoftambém fornecerá arquivos .so mapeados na memória - o que tecnicamente não é o mesmo que um manipulador de arquivos que o aplicativo tem controle. /proc/<pid>/fdé o ponto de medição para descritores de arquivos abertos - no entanto: mencionado na página proc-man - se o encadeamento principal de um programa multithread tiver terminado, esse diretório estará indisponível.

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

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


A lsofdá-lhe quase a mesma saída, mas inclui também cwd, rtde txtdescritores de arquivos.
22616 Ian Bamforth

Observe também que o número de espaços entre COMMANDe PIDpode variar. Substitua os espaços por [[:space:]]*para torná-lo mais geral.
21916 Ian Bamforth

Eu também encontrei lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l aqui , enquanto o lsofshell do Android ( adb shell) não suporta -ae -d. Então eu uso a versão do Kvisle finalmente.
Weekend
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.