2012年4月30日月曜日

Mac OSでstrace(あれ?存在しないぞ)

ちょっととあるプロセスが気になったのでstraceで調べようと思ったのですが、Macにstraceは存在しないみたいです。 mac portsにも無い。うーん。 調べていたら以下のコマンドがあったので忘れないようにメモ。
Mac OSでstraceコマンドに代わるコマンドたち
[2013/12/5 更新] straceに代わるコマンドが発行するシステムコールを表示するコマンドとして dtrussというコマンドがありました。
  • dtruss
  • sc_usage
  • fs_usage

詳細はmanコマンドで調べて欲しいですが、

sc_usageコマンドはシステムコールの統計情報を表示します。
fs_usageコマンドはファイルシステムに関するシステムコールを表示します。

sc_usageは統計情報なので、表示としてはtopコマンドのシステムコール版のようなイメージですね。 fs_usageは指定したプロセスがコールしているファイルシステム等に関するシステムコールがリアルタイムに 表示されるイメージです。私の場合、straceを使う場面は該当プロセスがどのファイルにアクセスしているとか、 どの通信をしているのかが知りたい時なので、そういう意味でstraceに近いのはfs_usageの方かもしれません。
sc_usage 使用例
 以下はTerminalのシステムコール統計を表示します。引数にプロセス名を指定します。また、管理者権限で実行する必要があるので、sudoコマンドで実行する必要があります。
MacBook-Pro:~ naoyuki$ sudo sc_usage Terminal
fc_usage 使用例
使い方はsc_usageと同じです。プロセス名を引数に指定します。
MacBook-Pro:~ naoyuki$ sudo fs_usage Terminal
その他コマンド
 私がLinuxを使用している時に該当プロセスが使用しているファイルを調べるコマンドに
lsofというコマンドがあるのですが、これはMacに標準で存在しました。
% lsof -p [pid]
のように使用します。このコマンドは管理者権限の必要は無いようなので、sudoの指定は必要無いです。

2 件のコメント :

  1. dtruss というコマンドがあるそうです。

    返信削除
    返信
    1. おぉ!ご指摘有難うございます。
      確かに、コマンドありました。

      削除