持续监视进程打开/访问的文件


Answers:


31

尝试strace -p 12345; 它应该做您想要达到的目标。

可以过滤输出以仅显示打开的文件(Dan D.的comment):

strace -e open -p 12345

注意:您也可以使用跟踪快速运行的进程strace -e open <command>


输出不友好,多余的东西太多了。
MA1

您可以通过管道-来解决strace -p {pid} | grep -i "Open" | tee files_opened.log。关键字是grep,它使您可以过滤所需系统调用的输出(例如open())。

11
@Ninefingers实际上strace可以比grep使用以下-e选项做得更好:strace -e open
Dan D.

@DanD哦,是的,ofc :)

当我杀死strace命令时,它也杀死了它正在跟踪的东西。为什么会发生这种情况(cygwin)?
CMCDragonkai

6

新的实用工具fatrace将执行以下操作:https : //launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

不要使用-p选项,这意味着它与lsof或其他实用程序中的含义相反。


3

这将循环重新运行您的命令并每次清除屏幕:

watch "lsof -p 12345"

警告:这将丢失快速文件访问权限,仅适合查看长期存在的文件


2
与使用的其他答案相比,这有点笨拙strace
大卫·佛斯特

1
那是不正确的解决方案-进程lsof
2014年

@Dor可以将lsof的计时设置为1秒以内,并提高其精度。尽管与他人相比笨拙,但是您错了,因为这是不准确的解决方案。
Jordon Bedwell 2014年

如果您正在查看长文件操作(例如数据库备份),则这可能是一个很好的简单选择。
jcalfee314
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.