ディレクトリがあり、新しいファイルまたはディレクトリが作成されたときにその権限を更新したいと思います。
現在これを行いましたが、fswatch
新しいファイル/ディレクトリの作成が検出されましたが、権限を変更するとスクリプトが再度呼び出され、無限ループが発生します。
#!/bin/bash
fswatch -0 -r --event Created /path/to/my/directory \
| while read -d '' file; do \
echo "file: ${file}"
if [[ -d ${file} ]] ; then
chown xxxx:staff "${file}"
chmod 770 "${file}"
elif [[ -f ${file} ]]; then
chown xxxx:staff "${file}"
chmod 775 "${file}"
fi
done
このスクリプトはmacOS High Sierra用です。
答え1
macOSシステムでそのまま試してみましたが、fswatch -r /path/to/my/directory
結果は次のとおりです。何
時々イベントを報告する原因とchmod
呼び出し(および除く)。 fswatchを起動する前にテストファイルを削除するなどの問題も発生しました。chown
Created
OwnerModified
IsFile
Removed
Linuxで実行すると(inotifyモニタを使用)、この動作は発生しません。 chmod はAttributeModified
1 つのイベントのみ発生し、他のイベントは発生しません。
これは私にとって非常に驚くべきことであり、あなたが観察した(そして私が再現できた)動作を説明します。これは明らかに文書化された動作です。 fswatch GitHubリポジトリに この問題に関する「修正できない」質問が終了しました。:
短い時間内に同じファイルでさまざまなイベントが発生した場合、複数のイベントが同じイベントに関する情報を渡すことができます。 (...)
fswatch
それについて何もできません。
上記の問題ページでもいくつかの解決策を提案していますが、それらのどれもそれほど満足していません。おそらくあなたの場合、chmodとchownをそれぞれ適用する前に、既存の権限と所有権を確認するのが役立ちます。