「せっかくインストールしたフリーソフトがうまく動かない」
そんな時に威力を発揮するのが truss コマンドだ。
特定のプロセスについて、システムコールの引数と復帰値、受け取ったシグナルなどを表示してくれる。
こういった情報から、例えば、
- コンフィグレーションファイルが適切なディレクトリにインストールされていない
とか、
- ファイルに書出しをしようとしたけれど書き込み権限がないよとか
いうことが読み取れる。
使い方
マニュアルを見るといろいろなオプションがあって読むのが面倒くさいと思うかも知れないが、基本となる使い方は主に2種類。
- truss 経由でコマンドを実行して情報を得る。
- truss コマンド名
- デーモンプロセス等、既に起動されているプロセスの情報を得る。(もちろん、意図に反して終了してくれないプロセスについても)
- truss -p 対象プロセスのPID
使用時の注意としては、
- ログがいっぱい出るのでファイルにリダイレクトしておく。
- プリントやメール関連のようにセットUID やセットGID の立っているコマンドは root にならないとトレースできない。
- 処理の途中で別プロセスを起動するものには -f を付ける。
ちなみに私のお勧めオプションは
- -fae -o logfile
このログの中から open などをフィルタリングする。
使用例はこちら、
solaris の truss に相当するものとして
linux | strace |
|
IRIX | par | 標準提供 |
strace | フリーソフト |
がある。
|