2012-07-21 11 views
5

プロセスのpidを一覧表示するfuserコマンドがありますが、ファイルにアクセスしたプロセスをどのように継続的に監視していますか? (tail -f filenameと同様の振る舞いを考えてください)特定のファイルにアクセスしたプロセスを監視する方法は?

ファイルに書き込んでいくらかの間隔でハンドルを解放するプロセスがあると、fuserを使用してそのプロセスをキャッチするのは難しいと言います。

+0

としてinotifywatchのソースを入手することができますあなたはどのように(非)侵入および(非)インタラクティブが必要なのですhttp://linux.die.net/man/7/inotify – Jayan

+0

をご確認ください/これに余裕はありますか? @ cravooriのポーリングは、あなたが言及した間隔が十分に長い場合には機能します。ファイルを名前付きパイプで置き換えてバッファを飽和させると、すべてのライターがブロックされ、余暇でそれらを識別できるようになりますが、探している解決策ではないかもしれません。最後に、あなた自身のLinux [カーネルトレースポイント](http://netsplit.com/2011/03/07/tracing-on-linux/)を定義して、どのプロセスが特定のファイルを書き込み用にオープンしたかを追跡することができます。 – vladr

答えて

1

定期的にコマンドを実行することができます。また、連続したランの違いを強調する目的で、差分フラグをサポートしています。

watch -n 5 'fuser file_name' 
+0

実際に私のために働いていない...ファイルへの書き込みはかなり短く、時計はそれをキャッチしませんでした(試してみました-n 1も同様) – the1plummie

0

Linuxを使用していると仮定して、inotifywatchを使用できます。

このコマンドは、すべてのアクセスを印刷し、60秒間ファイルに変更して統計情報を出力します。

inotifywatch -v -e access -e modify -t 60 filename 

あなたはhttps://github.com/rvoicilas/inotify-tools/wiki

+2

これはアクセス/変更の数を表示しますが、どのプロセスがファイルにアクセスしたか/変更したかを知るために? – aioobe

関連する問題