opensnoop跟随儿童模式

时间:2017-01-13 14:36:47

标签: dtrace

来自opensnoop

DTrace可以显示程序/ pid打开的文件。但它不会跟踪分叉/ vforked孩子打开。相关dtruss具有以下功能。

有没有办法告诉opensnoop也跟着孩子?

1 个答案:

答案 0 :(得分:2)

-p选项实际上会将PID == pid检查添加到生成的脚本中pidbuilt in variable,表示当前进程ID,PID-p期权价值。

DTrace中有一个名为progenyof的操作,它会检查当前进程是否为进程的子进程(不是必需的直接进程),因此只需在opensnoop中替换该进行检查:

--- /usr/dtrace/DTT/opensnoop   Wed Jun 25 01:34:47 2014
+++ opensnoop   Fri Jan 13 17:43:41 2017
@@ -199,7 +199,7 @@

        /* check each filter */
        (OPT_name == 1 && NAME == execname) ? self->ok = 1 : 1;
-       (OPT_pid == 1 && PID == pid) ? self->ok = 1 : 1;
+       (OPT_pid == 1 && progenyof(PID)) ? self->ok = 1 : 1;
        /* OPT_file is checked on return to ensure pathp is mapped */
}