サーバ管理
trussコマンドを使ってシステムコールを追跡することが出来ます。例えば、あるコマンドがどんなファイルを読み込んでるか等を確認することが出来ます。いくつか例を記載します。
psコマンドでhttpdプロセスのプロセスIDを調べます。
# ps -ef | grep httpd
-pオプションの後、先ほど調査したhttpdプロセスのプロセスIDを指定して、システムコールの動きを見てみます。
# truss -p <PID>
結果をファイルに保存したい場合は、-oオプションで保存先ファイルを指定します。
truss -o /tmp/hoge -p <PID>
-tオプションでシステムコールを指定します。
# truss -t open /usr/sbin/nslookup --- open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT open("/usr/lib/libl.so.1", O_RDONLY) = 3 open("/usr/lib/libresolv.so.2", O_RDONLY) = 3 open("/usr/lib/libsocket.so.1", O_RDONLY) = 3 open("/usr/lib/libnsl.so.1", O_RDONLY) = 3 open("/usr/lib/libc.so.1", O_RDONLY) = 3 open("/usr/lib/libdl.so.1", O_RDONLY) = 3 open("/usr/lib/libmp.so.2", O_RDONLY) = 3 open("/usr/platform/SUNW,Sun-Blade-100/lib/libc_psr.so.1",O_RDONLY) = 3 open("/etc/resolv.conf", O_RDONLY) = 3 open("/export/home/user1/.nslookuprc", O_RDONLY) Err#2 ENOENT
色んなライブラリファイル等を参照していることが理解できます。