Linux:获取一个程序当前打开的文件列表

在Linux中,如何获得当前在程序X中打开的文件列表?

(具体来说,我在Fedora上,这个程序是Zend Studio,但我认为这是一个普遍的答案。)

使用例如lsof (“列表打开文件”)并过滤输出,或使用-c programX选项将其限制为由programX打开的文件。 这个表达式可以是通配符。

您可以在/proc/PID/fd中找到符合实际文件的符号链接,其中PID是进程标识。

ls -l /proc/<zend studio's pid>/fd会打印一个文件描述符列表。 那些映射到通过open()的文件的符号链接将用于打开它们的文件路径。

如果你还没有安装程序lsof 。 获取正在运行的程序的pid。 运行lsof -p [pid]

 lsof -p [PID] 

或者,一次性获得PID

 lsof -p `pgrep [PROG_NAME]` 

或者,甚至更简单

 lsof -c [PROG_NAME] 

您可以使用

 ls /proc/PID/fd | wc -l 

其中回退由PID打开的文件的计数,或者您可以使用lsof(打开的文件的列表)

 lsof -a -p pid