メモ プロセスの挙動を調べたいとき

今から書く事はSoftware Design 201105にすべて載っていますが自分の整理のためにここに書きます。

開いているファイルがみたい。例えばログとかね。

/proc/${pid}/fd 以下のディレクトリは開いているファイルが一覧としてみられます。
ここに無いという事はsyslogか書いてないかです。

今動いているプロセスがどんな環境変数かしりたい

前あったトラブルでcronから実行すると環境変数がたりなくて大変という事態がありました。そんなときに
/proc/${pic}/environ をcatしたら環境変数がわかります。

動いているプロセスのパスがしりたい。

実行ファイルのパスは /proc/${pid}/cwd のリンク先で見られます。

だけど設定ファイルとかは一瞬しか開かないし大変だよね。どうやって特定しよう。

設定ファイルがどこにあるか分からないときにはfdは役に立ちません。一瞬開いて閉じるからです。そんなときはプロセスがfileopenのapiを呼ぶ部分を監視しつつreloadしてみましょう。

strace -p ${pid} 2>&1 | grep open

もしreloadが無い場合は、

strace -f 起動コマンド 2>&1 | grep open

で見てみましょう