同Shell
脚本类似,DTrace
脚本也可以接收运行时参数:$0
扩展为脚本名,$1
扩展为第一个参数,$2
扩展为第二个。。。Macro Arguments文档提供了一个tracewrite.d
例子:
#!/usr/sbin/dtrace -s
syscall::write:entry
/pid == $1/
{
}
需要注意的是如果在脚本中使用了$1
,$2
这些参数,在执行脚本时一定要提供这些参数:
# ./tracewrite.d 123
否则直接运行脚本就会报出如下错误:
# ./tracewrite.d
dtrace: failed to compile script ./tracewrite.d: line 4: macro
argument $1 is not defined