次の例は、述語を含む変更バージョンのreadtrace.d
プログラムを示しています。
/* readtrace1.d -- Modified version of readtrace.d that includes a predicate */ syscall::read:entry /execname == "df"/ { self->t = timestamp; } syscall::read:return /self->t != 0/ { printf("%s (pid=%d) spent %d microseconds in read()\n", execname, pid, ((timestamp - self->t)/1000)); self->t = 0; /* Reset the variable */ }
述語/execname == "df"/
は、プローブの起動時にdf プログラムが実行されているかどうかをテストします。
#dtrace -q -s readtrace1.d
df (pid=1666) spent 6 microseconds in read() df (pid=1666) spent 8 microseconds in read() df (pid=1666) spent 1 microseconds in read() df (pid=1666) spent 50 microseconds in read() df (pid=1666) spent 38 microseconds in read() df (pid=1666) spent 10 microseconds in read() df (pid=1666) spent 1 microseconds in read()^C