hajichan.net technical version
トップページ >> サーバ管理(Solaris) >> システムコールを追跡する

サーバ管理

システムコールを追跡する

trussコマンドを使ってシステムコールを追跡することが出来ます。例えば、あるコマンドがどんなファイルを読み込んでるか等を確認することが出来ます。いくつか例を記載します。

動作しているhttpdプロセスのシステムコールを追跡

psコマンドでhttpdプロセスのプロセスIDを調べます。

# ps -ef | grep httpd

-pオプションの後、先ほど調査したhttpdプロセスのプロセスIDを指定して、システムコールの動きを見てみます。

# truss -p <PID>

結果をファイルに保存したい場合は、-oオプションで保存先ファイルを指定します。

truss -o /tmp/hoge -p <PID>

nslookコマンドがどんなファイルを読み込んでるかを追跡

-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

色んなライブラリファイル等を参照していることが理解できます。

ページのトップへ戻る