タグ付けされた質問 「inotify」

1
カーネルのinotify監視制限に達しました
私は現在、Linuxボックスで問題に直面しています。rootとして、inotifyの監視制限に達したためにエラーを返すコマンドがあります。 # tail -f /var/log/messages [...] tail: cannot watch '/var/log/messages': No space left on device # inotifywatch -v /var/log/messages Establishing watches... Failed to watch /var/log/messages; upper limit on inotify watches reached! Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.` 私は少しグーグルで見つけたすべての解決策は、制限を増やすことです: sudo sysctl fs.inotify.max_user_watches=<some random high number> …
206 linux  kernel  inotify 

7
inotifyリソースを消費しているのは誰ですか?
Fedora 15に最近アップグレードした後、次の行に沿っていくつかのツールがエラーで失敗していることがわかりました。 tail: inotify resources exhausted tail: inotify cannot be used, reverting to polling tailinotifyの問題を報告しているだけではありません。カーネルに問い合わせて、どのプロセスがinotifyリソースを消費しているかを調べる方法はありますか?現在のinotify関連のsysctl設定は次のようになります。 fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 8192 fs.inotify.max_queued_events = 16384
49 fedora  kernel  inotify 

3
inotifywaitを使用して、特定の拡張子のファイルが作成されるディレクトリを監視する方法
私はこの答えを見ました。 例として、inotifywaitの使用を検討する必要があります。 inotifywait -m /path -e create -e moved_to | while read path action file; do echo "The file '$file' appeared in directory '$path' via '$action'" # do something with the file done 私の質問は、上記のスクリプトは任意のタイプのファイルの作成のためにディレクトリを監視しinotifywaitますが、特定のタイプ/拡張子のファイルが作成された(またはディレクトリに移動された)ときにのみレポートするようにコマンドを変更するにはどうすればよいですか?.xmlファイルが作成されたときにレポートします。 私が試したもの: inotifywait --helpコマンドを実行し、コマンドラインオプションを読みました。それは持っている--exclude <pattern>と--excludei <pattern>するコマンドEXCLUDE(正規表現を使用して)特定の種類のファイルを、私はする方法が必要ですちょうどINCLUDE特定のタイプ/拡張子のファイルを。

2
パイプでxargsを使用する方法はありますか?
フォルダーに移動したflacファイルを別のフォルダーのmp3に自動的に変換しようとしています。 私の現在のコード行はこれです: inotifywait -m -r -q -e moved_to --format "'%w%f'" ~/test | xargs -I x flac -cd x - | lame -b 320 - /media/1tb/x.mp3 これまでの動作を説明するために、inotifywaitは、そこに移動したファイルを〜/ testで再帰的に監視し、パスとファイル名をパイプに出力します。xargsはその名前を使用して適切なflacコマンドを作成し、xをファイル名に置き換え、ファイルを別のパイプにデコードします。新しいパイプでは、lameはflacの出力を/ mediaの下のmp3に処理します。xargsにパイプを介して何らかの方法で到達して、lameコマンドのxを置き換えるか、何らかの方法で両方のコマンドがアクセスできる変数に送信するか、何かが欲しい。名前付きパイプとそのジャズをいじってみましたが、2つのコマンド間でパイプ処理される実際のデータがあるという事実に頭を悩ませています。
15 shell  pipe  xargs  inotify 

1
inotifywatchが追加されたファイルの変更を検出しないのはなぜですか?
を使用して、/tmpフォルダの変更を監視しようとしていますinotifywatch: sudo inotifywatch -v -r /tmp いくつかのファイルを作成した後(touch /tmp/test-1 /tmp/test-2)、終了しますinotifywatch(次の統計を表示しますCtrl-C Establishing watches... Setting up watch(es) on /tmp OK, /tmp is now being watched. Total of 39 watches. Finished establishing watches, now collecting statistics. total attrib close_write open create filename 8 2 2 2 2 /tmp/ 出力は統計のみを出力しますが、期待したファイルは出力しません(hereまたはhere)。私は(を経由して、異なるタイプのアクセスしようとしたcat、mktempなど)が、それは同じことです。 私は何か見落としてますか?私がVPSを使用していて、何かが制限されているからです。 OS:VPS上のDebian 7.3(inotify-tools)

1
inotifyはどのように機能しますか?
ウィキペディアによると、 inotifyは、ファイルシステムの変更を認識するLinuxカーネルサブシステムです。以前のdnotifyを置き換えました。 (例えばのCrashPlan、ドロップボックス、Gitのような)同期ファイルはユーザーガイドにお勧めすることをプログラムのユーザ増加することmax_user_watches(1、2、3)。 私がinotifyについて理解していることから、OSは、OSが変更を「探す」ことを要求するのではなく、ファイルが変更されたことを「通知」します。 すべてのディレクトリに「inotify」ファイルが作成されていると想定しています。これは正しいです?コマンドラインからinotifyと対話する方法はありますか? リソース NFSマウントでinotifyイベントが異なるのはなぜですか? ディレクトリ内の多数のファイルのInotifywait
14 inotify 

1
vimとともにinotifywaitを使用する
ファイルの変更を監視し、リモートコピーでrsyncする簡単なスクリプトがあります。 #!/bin/bash while inotifywait -e close_write somefile do rsync somefile user@host.domain:./somefile done nanoでは問題なく動作しますが、vimでは失敗します。nanoを使用すると、次のように出力されます。 somefile CLOSE_WRITE,CLOSE 次のループを開始して、別のエディションを待機します。 vimを使用すると、出力はなく、スクリプトは終了コード0で終了します。 私はいくつかの研究を行い、close_writeはvimと一緒にinititofywaitを使用するための正しいパラメータであることを発見しました(最初にmodifyイベントを使用したかった)が、何らかの理由で失敗します。
14 files  vim  rsync  inotify 

3
/ procの下のファイルの変更を通知する
ヘッドフォンが検出されるとヘッドフォンに切り替わり、検出されない場合はPulseAudioを備えた外部USBスピーカーに切り替える小さな「デーモン」をbashで作成しました。 私が探して/proc/asound/card0/codec#0いるのinotifywaitは、実際のファイルと同じように、ファイルの変更の通知を取得する方法です(/ procの下のファイルを「疑似ファイル」と見なす)。 私は私のコードが少し狂っています、なぜならそれは一日中実行sleep 1さawkれます、それは1日86400回です:) while sleep 1; do _1=${_2:-} _2=$(awk '/Pin-ctls/{n++;if(n==4)print}' '/proc/asound/card0/codec#0') [[ ${_1:-} = $_2 ]] || if [[ $_2 =~ OUT ]]; then use_speakers else use_internal fi done 私が探しているのは次のようなものです(この例は機能しません): codec=/proc/asound/card0/codec#0 while inotifywait $codec; do if [[ $(awk '/Pin-ctls/{n++;if(n==4)print}' $codec) =~ OUT ]]; then use_speakers else use_internal fi …
13 proc  inotify 

1
mutt:新しいメッセージを自動的に表示
muttを開いたとき、キーを押す(たとえば、下矢印)まで新しいメールは表示されません。その後、新しいメールが表示されます。muttが新しいメールが届いたことを認識し、数分ごとにキーを押す必要なく、自動的にメールを表示する方法はありますか? maildir形式(ローカルに保存された電子メール)を使用しています。最善の方法は何でしょうか?muttはn秒ごとにチェックする必要がありますか、または、おそらくinotifyを使用してOSから通知する必要がありますか?
12 email  mutt  inotify 

1
inotifyは、書き込みの開始時または完了時に通知を起動しますか?
ext3 fs上の通常のファイルを介して通信する2つのプロセス、リーダーとライターを想像してください。Reader IN_MODIFYにはファイルのinotify ウォッチがあります。ライターは、1回のwrite()呼び出しでファイルに1000バイトを書き込みます。Readerはinotifyイベントを取得fstatし、ファイルを呼び出します。リーダーには何が見えますか? Readerがst_sizeファイルに対して少なくとも1000を取得するという保証はありますか?私の実験から、そうではないようです。 Readerが実際にread()1000バイトできるという保証はありますか? これは、真剣にI / Oバウンドボックスで発生しています。たとえばsar、約1秒の待機時間を示します。私の場合、リーダーはを呼び出す前にinotifyイベントを取得してから10秒待ってから、stat結果が小さすぎます。 私が期待していたのは、ファイルの準備が整うまでinotifyイベントが配信されないことでした。私が実際に起こっていると思うのwrite()は、ライターでの呼び出し中にinotifyイベントが発生し、データが準備ができたときにシステム上の他のプロセスで実際に利用できることです。この場合、10秒では十分ではありません。 私は、カーネルが実際に私が推測している方法を実装していることの確認を探しているだけだと思います。また、おそらく、この動作を変更するオプションがありますか? 最後に-この振る舞いを考えると、inotifyのポイントは何ですか?とにかく、イベントを取得した後、データが実際に利用可能になるまで、ファイル/ディレクトリをポーリングすることになります。それをずっとやっていて、inotifyを忘れることもあります。 *** 編集 ** * * さて、よくあることですが、私が実際にやっていることが理解できたので、私が見ている行動は実際に理にかなっています。^ _ ^ 私は実際に、ファイルが存在するディレクトリのIN_CREATEイベントに応答しています。したがって、実際には、ファイルの作成に応答してファイルをstat()しています。必ずしもIN_MODIFYイベントではなく、後で到着する可能性があります。 コードを変更して、IN_CREATEイベントを取得したら、ファイル自体でIN_MODIFYにサブスクライブし、IN_MODIFYイベントを取得するまで実際にファイルを読み取ろうとしないようにします。ファイルへの書き込みを見逃す可能性のある小さなウィンドウがあることを認識していますが、最悪の場合、最大秒数後にファイルが閉じられるため、これは私のアプリケーションでは受け入れられます。
12 linux  files  stat  inotify 

1
SSHFSでinotifyまたは名前付きパイプを使用するにはどうすればよいですか?
sshfs魔法のおかげで、リモートサーバーからホームディレクトリをマウントできます。 sshfs user@server:/home/user ~/remote 楽観的には、ローカルプログラムがリモートログの変更に対応できるように、ローカルinotifyフックを~/remote/logFile(sshfsマウント内に)設定すると思いました。 cd ~/remote touch logFile # create remote file inotifywait logFile & # set up local inotify-hook ssh user@server -x touch /home/user/logFile # touch file from remote 何も起こりません。ローカルにファイルがinotifywaitない限りtouch、サイレントです。名前付きパイプへの書き込みも同様に失敗します。 どうしてこれなの?どうすればこのギャップを埋めることができますか? 私は可能性が実行しinotifywait、リモートのファイルシステム変更のシリアル化戦略をハックし、地元への接続を維持したが、その後、私はよ基本的にSSHFSを再実装します。そして、それは抽象化を完全に殺します。
12 sshfs  inotify  fifo 

4
バックグラウンドで実行されているシェルスクリプトを強制終了する
inotifyt-toolsのinotifywaitユーティリティを使用してディレクトリを監視するシェルスクリプトを作成しました。このスクリプトをバックグラウンドで継続的に実行したいのですが、必要に応じてスクリプトを停止できるようにしたいと思っています。 継続的に実行させるために、私はwhile true; このような: while true; do #a set of commands that use the inotifywait utility end でファイルに保存し/binて実行可能にしました。バックグラウンドで実行するためにnohup <script-name> &、ターミナルを使用して閉じました。 このスクリプトを停止する方法がわかりません。私はここでの回答と非常に密接に関連した質問をここで見てきました。 更新1: 以下の@InfectedRootの回答に基づいて、私は次の戦略を使用して問題を解決することができました。最初の使用 ps -aux | grep script_name sudo kill -9 <pid>プロセスを強制終了するために使用します。次に、返されたIDに再度pgrep inotifywait使用する必要sudo kill -9 <pid>がありました。 これは機能しますが、これは厄介なアプローチだと思います。より良い答えを探しています。 更新2: 答えは、2つのプロセスの強制終了で構成されています。コマンドラインでスクリプトを実行すると、2つのプロセスが開始されます。1つはスクリプト自体、もう 1 つはinotifyプロセスです。
12 bash  shell  kill  inotify 

2
Dropboxフォルダーに読み込まれたときにinotifywaitを使用してファイルを移動する
CentOSのドロップボックスに表示されたらすぐにファイルを別のフォルダーに移動する方法を探しています。 私はいくつかの手がかりを求めてインターネットを調査しましたがinotify、表示されたとおりにファイルを処理するスクリプトを呼び出すために使用する必要があるという事実以上のことはできません。 私のBASHの知識は非常に限られているので、これをPHPで記述できるかどうかは疑問です。 つまり、使用して表示されたらすぐにファイルを別のフォルダに移動するにはどうすればよいinotifyですか?
12 bash  centos  inotify 

1
inotifyを使用してディレクトリを監視するが100%機能しない
特定のディレクトリを監視するbashスクリプトを記述しました/root/secondfolder/。 #!/bin/sh while inotifywait -mr -e close_write "/root/secondfolder/" do echo "close_write" done 私はと呼ばれるファイルを作成するときfourth.txtに/root/secondfolder/、それまでと書き込みものを、それを保存して閉じ、それは次のように出力します。 /root/secondfolder/ CLOSE_WRITE,CLOSE fourth.txt ただし、「close_write」はエコーされません。何故ですか?

1
NFSマウントでinotifyイベントが異なるのはなぜですか?
しばらく前に、ファイルがNFSマウントに保存されるときとローカルファイルシステムに保存されるときでは、inotifyによって報告されるイベントが異なることに気付きました。 基盤となるVFSは、ファイル操作の統一されたビューを提供するべきではありませんか? 以下は、Debian 7.1(Linux 3.2)でファイルを保存するVIMのトレースです。 NFSマウントの場合: wd=1 mask = 32 (IN_OPEN) wd=1 mask = 16 (IN_CLOSE_NOWRITE) wd=1 mask = 2048 (IN_MOVE_SELF) wd=1 mask = 4 (IN_ATTRIB) wd=1 mask = 1024 (IN_DELETE_SELF) wd=1 mask = 32768 ) ローカルファイルシステム wd=1 mask = 32 (IN_OPEN) wd=1 mask = 16 (IN_CLOSE_NOWRITE) wd=1 mask = …
10 linux  nfs  inotify 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.