Sem ver o resultado real, é difícil dizer exatamente o que está acontecendo, mas acredito que isso seja causado pelo fato de o comando lsof -p PID
estar apenas imprimindo arquivos abertos pelo PID especificado, enquanto o lsof | grep PID
é imprimir todas as linhas onde 'PID' está localizado em qualquer lugar da linha. Por exemplo, se você estiver procurando por PID = 123, a opção grep
também imprimirá linhas para 1231, 1232, 1233 etc. do PID, bem como quaisquer arquivos localizados em pastas com 123 em qualquer lugar do caminho completo.
EDITAR:
Em seu exemplo específico, a diferença é que lsof
está ignorando arquivos abertos por um encadeamento. Se você observar a saída no exemplo grep
, a terceira coluna será o 'TID' ou o ID do thread. As linhas sem um TID correspondem ao que você estava vendo quando usou a opção -p
. Linhas com um TID (ou seja, linhas abertas por outros tópicos) são os extras.