我想跟踪对特定文件的写入,所以我想我可以这样做:
我在 上创建一个探针do_sys_open
,如果filename
参数与我正在寻找的模式匹配,我使用触发器来启用一个返回探针,该探针会获取返回的文件描述符 id(它是$retval
)。这个返回探针将对 有一个过滤器,common_pid
因为我只对刚刚打开我要监视的调用fd
返回的 s感兴趣。返回探针采用并启用另一个探针,并在 和 上使用过滤器。我希望这样我就可以只跟踪我正在监视的一个文件上的操作。do_sys_open
filename
fd
sys_write
common_pid
fd
write
问题是这不适用于多线程进程。如果一个进程同时调用open
两次(使用两个线程),上述机制可能会失败。现在我正在尝试找出一种方法来在入口do_sys_open
和返回探测之间建立这种关联do_sys_open
,我会很高兴有任何建议。
PS:我不确定这个问题是属于 stackoverflow 还是 unix & linux。