Eu não entendo a saída do comando lsof.
Quando eu escrevo
lsof -p PID
Recebo 4 linhas e quando escrevo
lsof | grep PID
Eu recebo centenas de linhas.
Não deveria retornar o mesmo resultado?
Obrigado por suas respostas. Aqui estão os resultados. Parece que é subprocesso ou o que essas tarefas significam?
lsof -p 29076
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied)
java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied)
java 29076 pr txt unknown /proc/29076/exe (readlink: Permission denied)
java 29076 pr NOFD /proc/29076/fd (opendir: Permission denied)
lsof |grep 29076|head -20
java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied)
java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied)
java 29076 pr txt unknown /proc/29076/exe (readlink: Permission denied)
java 29076 pr NOFD /proc/29076/fd (opendir: Permission denied)
java 29076 300 pr cwd unknown /proc/29076/task/300/cwd (readlink: Permission denied)
java 29076 300 pr rtd unknown /proc/29076/task/300/root (readlink: Permission denied)
java 29076 300 pr txt unknown /proc/29076/task/300/exe (readlink: Permission denied)
java 29076 300 pr NOFD /proc/29076/task/300/fd (opendir: Permission denied)
java 29076 329 pr cwd unknown /proc/29076/task/329/cwd (readlink: Permission denied)
java 29076 329 pr rtd unknown /proc/29076/task/329/root (readlink: Permission denied)
java 29076 329 pr txt unknown /proc/29076/task/329/exe (readlink: Permission denied)
java 29076 329 pr NOFD /proc/29076/task/329/fd (opendir: Permission denied)
java 29076 330 pr cwd unknown /proc/29076/task/330/cwd (readlink: Permission denied)
java 29076 330 pr rtd unknown /proc/29076/task/330/root (readlink: Permission denied)
java 29076 330 pr txt unknown /proc/29076/task/330/exe (readlink: Permission denied)
java 29076 330 pr NOFD /proc/29076/task/330/fd (opendir: Permission denied)
java 29076 331 pr cwd unknown /proc/29076/task/331/cwd (readlink: Permission denied)
java 29076 331 pr rtd unknown /proc/29076/task/331/root (readlink: Permission denied)
java 29076 331 pr txt unknown /proc/29076/task/331/exe (readlink: Permission denied)
java 29076 331 pr NOFD /proc/29076/task/331/fd (opendir: Permission denied)
lsof - lista os arquivos abertos, tente ler a página de manual do lsof
#man lsof
lsof -p PID
lista arquivos abertos associados à identificação do processo do PID.Na ausência de opções, lsof lista todos os arquivos abertos pertencentes a todos os processos ativos. ao fazê-
lsof | grep PID
lo, lista todos os arquivos abertos pertencentes a todos os processos ativos e grep o número do PID, que pode corresponder ao próprio PID e também em qualquer lugar, onde o PID aparece como parte de outros PIDs e também pode ser o processo filho do PID, e em breve.Portanto, se você deseja usar
lsof | grep PID
, deve corresponder exatamente ao PID, como a correspondência de palavras completaslsof | grep -w PID
, mas ainda resultará em mais linhas se o PID tiver outros processos filhos.fonte
Eu tentei isso no meu sistema e os dois comandos geram as mesmas listas. Sugiro que você tente os dois comandos consecutivamente várias vezes, apenas para garantir que o estado do processo seja estável. De acordo com a página do manual e suas saídas, esta é a única explicação que posso ter.
fonte
Algumas versões do lsof incluem um ID de thread. Isso pode ser determinado pelo cabeçalho da coluna TID aparente na saída. Essa saída dará origem a uma duplicação de entradas, pois lsof potencialmente exibirá entradas duplicadas uma para cada encadeamento.
https://support.datastax.com/hc/en-us/articles/209826153-lsof-shows-Cassandra-is-holding-a-large-amount-of-files-open
fonte