問題タブ [fanotify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
17516 参照

linux - Linux の新しい「fanotify」ファイル システム監視機能をプログラムするにはどうすればよいですか?

fanotifyの上に構築された は、置き換えられfsnotifyた を置き換えることになっています。ファイルシステムの変更を監視するために使用する良いプログラミング例や既存のユーティリティはありますか? どの程度の詳細を提供しますか?inotifydnotifyfanotifyfanotify

0 投票する
1 に答える
597 参照

linux - fanotify イベントが参照するパスを確認する方法

ディスクからプリフェッチするために、システムでどのファイルがどの順序で開かれているかを調べたいと思います。fanotifyは、システム全体のオープン イベントを監視するのに適しているようです。しかし、私が知る限り、fanotify_event_metadata構造にはパスを含むフィールドがありません。では、特定のイベントが参照しているパスをどのように判断すればよいでしょうか? または、ファノティファイはパス名を見つけるための間違ったアプローチですか? inotify を使用してツリー全体のウォッチを再帰的に登録する必要がありますか?

0 投票する
1 に答える
548 参照

fanotify - fanotify は、マルチスレッド プログラムによる FAN_OPEN_PERM イベントのシステム全体を監視できず、ディレクトリを無視することもできません

FAN_OPEN_PERM | システム全体を監視したい | マルチ スレッド プログラムによる FAN_CLOSE_WRITE イベント、および一部のディレクトリ (/home/mydir など) を無視します。main() で fanotify_init() と fanotify_mark() を次のように使用しました。

//FAN_GLOBAL_LISTENER を使用する方法はありますか?

fd = fanotify_init(FAN_CLOEXEC | FAN_NONBLOCK | FAN_CLASS_CONTENT | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS, O_RDONLY | O_LARGEFILE) ...

// "/" (マルチスレッド プログラムとしては機能しません) または "/home" (正常に機能します) をマークします。

fanotify_mark(fd, FAN_MARK_ADD | FAN_MARK_MOUNT, FAN_OPEN_PERM | FAN_CLOSE_WRITE | FAN_EVENT_ON_CHILD, AT_FDCWD, "/") ....

//ここで、ディレクトリを無視します

fanotify_mark(fd, FAN_MARK_ADD | FAN_MARK_ONLYDIR | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY, FAN_OPEN_PERM | FAN_CLOSE_WRITE | FAN_EVENT_ON_CHILD, AT_FDCWD, "/home/mydir")

私のプログラムでは、main() はイベントを読み取り、それを複数のスレッドに渡してさらに処理します。

問題 : 1) このマルチスレッド プログラムでは、"/" を監視するとシステムがハングしますが、"/home" では問題なく動作します。2) それでも「/home/mydir」の通知を受け取ります (「/home」とマークされ、「/home/mydir」は無視されます)。

マルチスレッドプログラムで問題なくシステム全体をマークする方法は?

無視マスクを使用してディレクトリ全体を(再帰的に)無視する方法は? (カーネル 2.6.38-8-generic)

0 投票する
2 に答える
308 参照

c++ - ファイルにアクセスすることとファイルを開くことの違いは何ですか

ファイルを開くこととファイルにアクセスすることの違いは何ですか?

私は fanotify を使用しており、FAN_ACCESS イベントにのみ関心があります。プログラムを起動し、ファイルを編集しようとすると、プログラムは必要な処理を実行します。

そうは言っても、私はいくつかのテストを書いており、いくつかのテストケースでは次のようなコードを使用しています:

しかし驚くべきことに、このアクセスは私のプログラムでは検出されません。nanoから同じファイルにアクセスし(前述のプログラムを再起動しなくても)、すべてが再び機能します。

そのため、ファイルへのアクセスとファイルを開くことには何らかの違いが必要だと思います。

プログラムは常に root ユーザーによって実行されます。

次のようにフラグを設定します。

0 投票する
1 に答える
1872 参照

linux - ファイルが削除されたことを検出する方法

ファイルシステムを監視するプログラムを書いています。しかし、ファイルがいつ削除されたかを検出できません。監視対象のディレクトリ内のファイルを削除するときに fanotify が何らかのイベントを発生させることを期待して、FAN_MARK_ONLYDIR フラグを使用して監視を試みましたが、結果はありません。

fanotify を使用してこれを行うことさえ可能ですか? これを行うのに役立つものはありますか?

0 投票する
1 に答える
511 参照

c - fanotify: ファイルシステム全体ではなく、特定の 1 つのフォルダーを監視します

fanotify マンページの例を使用して、ファイル アクセスが発生したすべてのパスを取得しました。しかし、/tmp/myfolder などの特定の 1 つのフォルダーからのファイル アクセスのみを監視したいと考えています。

そのために、特定のフォルダー「/tmp/myfolder」を追加します。

イベントマスク:

この特別なディレクトリからファイルアクセスのみを取得するために FAN_ONDIR を使用しても、ファイルシステム全体からすべてのファイルハンドルを取得します。コンパイルしたプログラムを sudo ./program で開始します。

0 投票する
1 に答える
134 参照

c++ - fanotify を使用してファイルへのアクセスを制御する実行中のデーモンで再起動またはシャットダウンすると、システムがフリーズする

ファイルへのアクセスを制御するためにデーモンで fanotify API を使用するようにしました。作業スレッドは次のとおりです。

正しく動作します。再起動またはシャットダウンする前にデーモンを停止すると、すべて問題ありません。しかし、デーモンの実行中にシステムを再起動またはシャットダウンしようとすると、システムがフリーズします。

システムが再起動/シャットダウン時にデーモンに SIGSTOP を送信する可能性があると思いますが、それは正しいですか? もしそうなら、デーモンはどのファイルへのアクセスも許可できず、システムをロックしますか?

助けてください。

カーネル 3.11.0 で Ubuntu 12.04 64 ビットを使用しています。