我知道如何 strace 某个程序来查看它读取的所有文件。我知道如何查看哪些进程目前正在使用某个文件。
但是有没有办法记录所有打开的文件?我想要类似这样的东西,每次打开某个文件时都会打印出信息tail -f some/log/file
。lsof -f /file/someone/might/open/soon
谢谢
答案1
这可以通过审计系统来完成。你没有指定你的操作系统,我猜是 Linux。检查http://linux.die.net/man/8/auditd以及See also
底部的页面。
答案2
您可以使用 inotify 在文件被访问时运行 lsof。例如,在 incrontab 中:
/etc/passwd IN_ACCESS /tmp/lsof.sh $@
Incrontab 似乎不使用 shell,因此无法使用重定向。可以使用包装器代替:
lsof -f -- $1 >> /tmp/lsof.log