Gil*_*il' 92
该lsof的命令(在几个答案已经提到过)会告诉你哪个进程在你运行它的时候打开一个文件。lsof几乎适用于所有 Unix 变体。
lsof /path/to/file
Run Code Online (Sandbox Code Playgroud)
lsof不会告诉您两微秒前打开并一微秒前关闭的文件。如果您需要查看特定文件并在访问时做出反应,则需要不同的工具。
如果您可以提前一点计划,您可以将文件放在LoggedFS文件系统上。LoggedFS 是一个FUSE堆栈文件系统,它记录对层次结构中文件的所有访问。日志参数是高度可配置的。FUSE 适用于所有主要的 unice。您需要记录对创建文件的目录的访问。从提供的示例配置文件开始,并根据本指南进行调整。
loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file
Run Code Online (Sandbox Code Playgroud)
许多 unice 提供其他监控设施。在 Linux 下,您可以使用相对较新的 审计子系统。关于它的文献并不多(但不仅仅是关于loggedfs);你可以开始这个教程或一个 小 例子,或只是与auditctl手册页。在这里,应该足以确保守护进程已启动,然后运行auditctl:
auditctl -w /path/to/file
Run Code Online (Sandbox Code Playgroud)
(我认为旧系统需要auditctl -a exit,always -w /path/to/file)并观看/var/log/audit/audit.log.
小智 14
好吧,您可以lsof重复运行,如果幸运的话,罪魁祸首会将文件打开足够长的时间以使其显示。IE。:
$ lsof -r1 /path/to/file
Run Code Online (Sandbox Code Playgroud)
或许多文件
$ lsof -r1 /path/to/folder/*
Run Code Online (Sandbox Code Playgroud)
这将列出在某个时间点对给定路径的所有访问,每秒一次。这包括列出访问文件的进程的 PID。
如果这样不行,也就是文件打开和关闭都很快,这种情况经常发生,我相信你需要寻找更精细的工具。也许loggedfs可能是什么?
Hackland
如果每秒一次lsof不起作用,您当然可以破解一个尽可能快地重复运行 lsof 的 while 循环。喜欢:
$ while true; do lsof /paht/to/file; done;
Run Code Online (Sandbox Code Playgroud)
不漂亮,但谁知道呢,可能会这样做。
| 归档时间: |
|
| 查看次数: |
130528 次 |
| 最近记录: |