次のDプログラムは、プログラムが異なるファイルから読み取る回数を10秒以内にカウントし、上位5件の結果のみを表示します。
#emacs fdscount.d
#dtrace -C -D ENAME='"emacs"' -qs fdscount.d
/usr/share/terminfo/x/xterm 2 /dev/urandom 3 /usr/share/emacs/24.3/lisp/calendar/time-date.elc 5 /dev/tty 8 /usr/share/emacs/24.3/lisp/term/xterm.elc 8
fds[]
組込み配列を使用して、read()
へのファイル記述子引数arg0
に対応するファイルを判別します。 fds[]
by arg0
で索引付けされるfileinfo_t
構造体のfi_pathname
メンバーには、ファイルのフルパス名が含まれます。
fileinfo_t
構造のメンバーの詳細は、「Oracle® Linux: DTraceガイド」のfileinfo_tを参照してください。
END
アクションのtrunc()
関数は、集計の上位5つの結果のみを表示するようにDTraceに指示します。
DTraceは、profile:::tick-10s
プローブ、fds[]
組込み配列およびsyscall::read:entry
プローブにアクセスできます。 Cプリプロセッサ・ディレクティブをdtrace に指定して、ENAME
変数の値(emacs
など)を設定します。 ただし、任意の実行可能ファイルを選択できます。 文字列引用符をエスケープするには、次のように、さらに一重引用符を使用する必要があります:
# dtrace -C -D ENAME='"emacs"' -qs fdscount.d
/usr/share/terminfo/x/xterm 2
/dev/tty 3
/dev/urandom 3
/usr/share/emacs/24.3/lisp/calendar/time-date.elc 5
/usr/share/emacs/24.3/lisp/term/xterm.elc 8
テスト下の実行可能ファイルで出力に/proc/
pid
/maps
エントリが表示される場合は、プロセスのマップ済メモリー・リージョンと権限に関する情報が含まれるprocfs
ファイル・システムのファイルを参照します。 pipe:
inode
およびsocket:
inode
エントリを表示すると、pipefs
およびsocketfs
ファイル・システムではinodesを参照します。