プロセスによって開かれた/アクセスされたファイルを継続的に監視する


25

lsof -p 12345 pidが12345であるプロセスによって開かれたすべてのファイルをリストしますが、特定の瞬間のみです。

プロセス全体でプロセスがアクセスするすべてのファイルをリスト/表示するために、プロセスを開始から終了まで(プロセスが終了するまで)継続的に監視するにはどうすればよいですか?


回答:


31

で試してみてくださいstrace -p 12345。達成しようとしていることを実行する必要があります。

出力は、開いているファイルのみを表示するようにフィルター処理できます(ダンD.のコメント):

strace -e open -p 12345

注:を使用して、高速で実行中のプロセスをトレースすることもできますstrace -e open <command>


出力はフレンドリーではなく、余分なものが多すぎます。
MA1

パイピング-で修正できますstrace -p {pid} | grep -i "Open" | tee files_opened.log。キーはですgrep。これにより、目的のシステムコールの出力をフィルタリングできます(例:)open()

11
@Ninefingersは実際straceよりも良好なことを行うことができますgrep-eオプション:strace -e open
ダン・D.

@DanD oh yeah、ofc :)

straceコマンドを強制終了すると、トレース対象も強制終了されます。なぜこれが起こっているのですか(cygwin)?
CMCDragonkai

6

新しいユーティリティfatraceはこれを行います:https : //launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

-pオプションを使用しないでください。これは、lsofまたは他のユーティリティでの意味とは逆を意味します。


3

これにより、毎回コマンドの再実行と画面のクリアがループされます。

watch "lsof -p 12345"

警告:これは迅速なファイルアクセスを見逃し、長期にわたるファイルを表示するのにのみ適しています


2
これは、を使用する他の回答と比べてやや不器用ですstrace
デビッドフォースター

1
これは不正確なソリューションです-プロセスは実行の間でファイルを使用することができますlsof
ドール

@Dorでは、lsofのタイミングを1秒未満に設定し、精度を上げることができます。他と比較すると不器用ですが、不正確な解決策であるという点であなたは間違っています。
ジョードンベッドウェル14

長いファイル操作(データベースのバックアップなど)を見る場合、これは簡単な代替手段です。
jcalfee314
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.