次のサンプルスクリプト syscall.d は、実行可能ファイルがシステムコールを開始するたびに、その実行可能ファイルの名前をトレースします。
syscall:::entry
{
trace(execname);
}
ファイル名は接尾辞 .d で終わっています。D スクリプトの末尾は、通常、この形式になります。このスクリプトは、DTrace コマンド行から次のコマンドを使用して実行できます。
# dtrace -s syscall.d dtrace: description 'syscall ' matched 226 probes CPU ID FUNCTION:NAME 0 312 pollsys:entry java 0 98 ioctl:entry dtrace 0 98 ioctl:entry dtrace 0 234 sysconfig:entry dtrace 0 234 sysconfig:entry dtrace 0 168 sigaction:entry dtrace 0 168 sigaction:entry dtrace 0 98 ioctl:entry dtrace ^C |
このスクリプトは、次の 2 つの手順でコマンド行にファイル名を指定する方法で実行できます。まず、ファイルの先頭行がインタプリタの呼び出しになっていることを確認します。インタプリタの呼び出し行は、#!/usr/sbin/dtrace -s です。次に、ファイルの実行権を設定します。
# cat syscall.d
#!/usr/sbin/dtrace -s
syscall:::entry
{
trace(execname);
}
# chmod +x syscall.d
# ls -l syscall.d
-rwxr-xr-x 1 root other 62 May 12 11:30 syscall.d
# ./syscall.d
dtrace: script './syscall.d' matched 226 probes
CPU ID FUNCTION:NAME
0 98 ioctl:entry dtrace
0 98 ioctl:entry dtrace
0 312 pollsys:entry java
0 312 pollsys:entry java
0 312 pollsys:entry java
0 98 ioctl:entry dtrace
0 98 ioctl:entry dtrace
0 234 sysconfig:entry dtrace
0 234 sysconfig:entry dtrace
^C
|