initifywait --exclude を除外しないファイルが 1 つ以上ある場合は実行されません。

initifywait --exclude を除外しないファイルが 1 つ以上ある場合は実行されません。

私はディレクトリを監視するためにこのコマンドを使用しています:

inotifywait -r -e modify,create,delete --exclude ".*(\.(git|idea)|(.*(___jb_tmp___|___jb_old___)))" my-dir

しかし、期待どおりに動作しません。私が望むのは、変更されたすべてのファイルが除外された場合にのみ実行されないことです。少なくとも1つのファイルが除外されずに変更された場合、inotifywaitは「トリガー」を望んでいます。

私の全体的な計画は、Pythonファイルやその他の関連コンテンツが変更されるたびにコードを削除サーバーにプッシュすることです。 IDE(PyCharm)でメタファイルまたはgitファイルのみを変更するときにコードをプッシュしたくありません。

これを行う方法はありますか?

PyCharmでPythonファイルを変更すると、一部のファイルが次に変更されたため、inotifywaitは実行されません。_jb_tmp_。ただし、Pythonファイルを手動で変更すると機能します(たとえば、nanoやvimなど)。

ベストアンサー1

私の質問のコメントで述べたように、問題はinotifywaitPyCharmのために発生していないことがわかりました。 PyCharmには、変更を最初に一時ファイルに書き込むようにIDEに指示し、成功すると元のファイルを削除し、一時ファイル名を元のファイル名に変更する「Safe Write」というオプションがあることがわかりました。

これがinotifywait、次のイベントのみが表示される理由です。

$ inotifywait -r -m -e modify,create,delete my-dir

my-dir/ CREATE main.py___jb_tmp___ 
my-dir/ MODIFY main.py___jb_tmp___ 
my-dir/ DELETE main.py___jb_old___ 
my-dir/.idea/ CREATE workspace.xml___jb_tmp___ 
my-dir/.idea/ MODIFY workspace.xml___jb_tmp___ 
my-dir/.idea/ DELETE workspace.xml___jb_old___ 
my-dir/.git/ CREATE index.lock 
my-dir/.git/ DELETE index.lock

したがって、PyCharmでセキュリティ書き込みを無効にし、次のコマンドを使用します。

inotifywait -r -e modify,create,delete --exclude ".*(\.git|\.idea)" my-dir

これがまさに私が望むものです。私が見たイベントはinotifywaitこんな感じです。

my-dir/main.pyを修正

おすすめ記事