Foi o que fiz, que funcionou perfeitamente para mim:
lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u
A opção -F n
para lsof
fará com que apenas imprima os nomes dos arquivos abertos. Cada linha de saída que tem o nome de um arquivo aberto será iniciada com o único caractere n seguido imediatamente pelo nome . Arquivos Regulares sempre serão o nome absoluto e completo do arquivo. O grep ^n/
selecionará apenas as linhas com um nome começando com /
(significando um nome de arquivo completo e absoluto); eliminando assim coisas como portas abertas, sockets, pipe (como FIFOs), etc. O cut -c2-
eliminará o primeiro caractere, o n
, deixando apenas o nome do arquivo. Então, finalmente, o sort -u
eliminará quaisquer entradas duplicadas.
Uma ressalva, isso incluirá arquivos que não são regulares , desde que seu nome comece com /
. Por exemplo, todos os arquivos que começam com o seguinte seriam incluídos:
E pode haver outras pessoas dependendo do seu SO.