使用 $target 宏变量可创建脚本,这些脚本可应用于所关注的特定用户进程(在 dtrace 命令行上使用 -p 选项选择的进程或使用 -c 选项创建的进程)。在创建或抓取进程且 $target 变量扩展为第一个此类进程的整数进程 ID 后,将编译在命令行上指定或使用 -s 选项指定的 D 程序。例如,以下 D 脚本可用于确定由特定主题进程执行的系统调用的分布:
syscall:::entry /pid == $target/ { @[probefunc] = count(); }
要确定由 date(1) 命令执行的系统调用的数量,请将脚本保存在文件 syscall.d 中并执行以下命令:
# dtrace -s syscall.d -c date dtrace: script 'syscall.d' matched 227 probes Fri Jul 30 13:46:06 PDT 2004 dtrace: pid 109058 has exited gtime 1 getpid 1 getrlimit 1 rexit 1 ioctl 1 resolvepath 1 read 1 stat 1 write 1 munmap 1 close 2 fstat64 2 setcontext 2 mmap 2 open 2 brk 4 |