Linuxでプロセスをトレースすると、読み取りと書き込みがファイル記述子ハンドル番号とともに表示されます。 /proc/$PID/fd
を見ると、fd番号に対応するファイルへのシンボリックリンクが表示されます(該当する場合)。
とにかくこれを行うためにstraceを取得し、(symlinkを逆参照することによって)strace出力内にファイル名を表示する方法はありますか?それはすでにLinux errnoを調べて文字列を切り詰めてエンコードするので、これもできますか?
pdate: straceがパスとfdを示すopen
呼び出しを表示することを知っています。実行時間の短いプロセスにはこれで十分です。しかし、私は非常に長い実行中のプロセス(数日で測定)があり、すべてをstraceの下で実行しなかったと仮定し、後でstrace -p
を使用して接続するだけです。
細かいマニュアルをざっと見てみるとわかります。
-y Print paths associated with file descriptor argu-
ments.