【发布时间】:2010-08-18 14:46:48
【问题描述】:
在 Linux 中,如何获取程序 X 中当前打开的文件列表?
(具体来说,我在 Fedora 上,程序是 Zend Studio,但我认为有一个通用的答案。)
【问题讨论】:
标签: linux
在 Linux 中,如何获取程序 X 中当前打开的文件列表?
(具体来说,我在 Fedora 上,程序是 Zend Studio,但我认为有一个通用的答案。)
【问题讨论】:
标签: linux
使用例如lsof(“列出打开的文件”)并过滤输出,或使用-c programX 选项将其限制为由 programX 打开的文件。此表达式可以是通配符。
【讨论】:
lsof | grep somefile,其中somefile 是我知道在Zend Studio 中打开的文件,但它什么也没找到。如果一个文件在 gedit 中打开,同样的事情。也许这些文件在技术上不是“打开”的,除非程序正在主动读取或保存它们,而其余时间它只是在内存中拥有一个副本和对文件存储位置的引用?
您可以在/proc/PID/fd 中找到指向实际文件的符号链接,其中PID 是进程ID。
【讨论】:
ps -AF | grep zend 并获得了各种列表(我运行 Zend Server 等),但没有任何东西看起来像工作室。我关闭了 Zend Studio 并再次尝试,列表是一样的。除了“开始杀死它们并查看它何时关闭”之外,关于如何确定 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
【讨论】: