プログラムのI/Oを監視する

プログラムのI/Oを監視する

複数の子プロセスを生成するプログラムがあります。

このプログラムとその子プログラムがどのファイルを作成、削除、変更しているかを知りたいです。

  • inotifywaitどのファイルがアクセスされているかはわかりますが、どのプロセスがそれを実行しているかはわかりません。また、モニターを設定するには、ファイルがどこに作成されているかを知る必要があります。

  • auditctlどのプロセスがファイルを変更したかをログに記録できますが、ログ記録を設定するには、ファイルがどこにあるかを知る必要があります。

  • lsofすべてのファイルを教えてくれますが、リアルタイムの追跡には適したソリューションではないようです。

どのファイルが操作されるかを事前に知らなくても、プログラムのファイル操作を監視できるものはありますか?

答え1

straceLinux では、次の種類のイベントを監視するために使用できます。

strace -f -p <PID> -e trace=file

Solaris では、 を使用できます。Solaris 11 の にデフォルトでインストールされているdtraceDTraceToolkit ツール をご覧ください。opensnoop/usr/dtrace/DTT/Bin/opensnoop

/usr/dtrace/DTT/Bin/opensnoop -p <pid>

答え2

Linuxの場合: Brendengregのperf-toolsのopensnoopで十分でしょう https://github.com/brendangregg/perf-tools

Solaris Dtraceはとにかくある

関連情報