在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