opensnoop从DTrace可以显示哪些文件是由程序/pid打开的。不过,它并不是由分叉/v叉子打开的。相关的dtruss具有以下功能。
有没有办法告诉opensnoop也跟着孩子?
发布于 2017-01-13 14:46:34
-p选项实际上将PID == pid检查添加到生成的脚本中,其中pid是built 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 */
}https://stackoverflow.com/questions/41637000
复制相似问题