如何跟踪文件锁(每个目录)

如何跟踪文件锁(每个目录)

我对 Linux 还很陌生,并且不知道如何做到这一点。

我有一个目录,我想监视(输出到 shell)该目录内的文件何时获得文件锁以及何时释放。

了解其他的事情也是可以的,比如何时创建文件等等,但我主要对锁感兴趣。

我不需要知道哪个进程执行了锁定,更多的是关于锁定发生的顺序。

我很确定存在一些用于此目的的工具(我已经安装了,dtrace但在--help我决定在这里提出问题之后)。

任何指点都表示热烈的赞赏。如果重要的话,我正在运行 Fedora 14 盒子。

答案1

我还没有检查你是否会得到你想要的东西,但我首先要尝试的是审计子系统。确保auditd守护进程已启动,然后使用auditctl配置您想要记录的内容。对于普通的文件系统访问,你会这样做

auditctl -w /path/to/directory
auditctl -a exit,always -S fnctl -S open -S flock -F dir=/path/to/directory

-S选项可用于将日志记录限制为特定的系统调用。这些日志出现在/var/log/audit/audit.logDebian 上,也可能出现在 Fedora 上。

如果您确实知道哪个进程可能锁定文件,请考虑strace在这些进程上运行(并且仅查看与文件相关的系统调用,或进一步限制为特定的系统调用)。

strace -s9999 -o foo.strace -e file foo

相关内容