2010-08-18 48 views
13

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

(具体地讲,我对Fedora和程序是Zend Studio的,但我相信有一个笼统的回答。)

+0

的http://stackoverflow.com/questions/2681501/identify-the-files-opened-a-particular-process-on-linux – 2014-01-23 11:42:10

+0

可能重复的可能的复制[识别在Linux上打开特定进程的文件](https://stackoverflow.com/questions/2681501/identify-the-files-opened-a-particular-process-on-linux) – eadmaster 2017-12-11 10:17:25

回答

18

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

+0

我试过'lsof | grep somefile',其中'somefile'是一个我知道在Zend Studio中打开的文件,但它什么都没发现。同样的事情,如果一个文件在gedit中打开。也许这些文件在技术上不是“开放的”,除非程序正在主动读取或保存它们,而剩下的时间它只是在内存中有一个副本,并且提供了文件存储位置的引用? – 2010-08-18 14:59:38

1

如果您尚未安装程序lsof。获取正在运行的程序的pid。运行lsof -p [pid]

6

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

+0

嗯。我试图确定进程ID - 我做了'ps -AF | grep zend'并得到各种列表(我有Zend服务器运行等),但没有看起来像工作室。我关闭了Zend Studio并再次尝试,并且列表相同。有关如何确定PID的任何想法,除了“开始杀死它们并查看它何时关闭?”之外 – 2010-08-18 15:06:20

+0

如果您没有安装lsof,则为+1。 – ATorras 2013-02-01 14:48:49

2

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

0
lsof -p [PID] 

或者,得到PID一鼓作气

lsof -p `pgrep [PROG_NAME]` 

甚至更​​简单

lsof -c [PROG_NAME] 
0

您可以使用

ls /proc/PID/fd | wc -l 

哪个retuns文件的计数打开PID 或者您可以使用lsof的(打开的文件列表)

lsof -a -p pid 
相关问题