0

いくつかのフォルダーに対して iNotify をセットアップし、Python スクリプトを呼び出して、作成されたファイルから Web サービスにテキストをアップロードする短い bash スクリプトを作成しました。リストの最初のフォルダーではプロセスは正常に機能しますが、他のフォルダーでは作成イベントが発生していないようです。スクリプトを正しく構成したと仮定しています。何か案は?コードは基本的に次のとおりです。

#!/bin/bash
inotifywait -m --format '%w%f' -e create /Folder1 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'PAUR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder2 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'RACH' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder3 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'CDR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder4 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'CHR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder5 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'PRMS' $FILE
done

ご協力いただきありがとうございます。

4

2 に答える 2

1

最初の while ループは終わりません。inotifywait -m は永久に実行されるコマンドです。

その上、inotifywait 自体がブロックされているため、それらすべてを 1 つのループに分割し、m フラグを削除しても役に立ちません。

最も簡単な解決策は、それらを複数のスクリプトに分割することです。

または、ほとんどのロジックが繰り返されるため、いくつかのパラメーターを受け入れる単一のスクリプトをセットアップすることがより理想的です。

/Folder1 を $1 に、2 番目の変数を $2 に置き換えることができます。次に、監視するフォルダーを渡してスクリプトを呼び出します。

./watch.sh /Folder1 PAUR &
./watch.sh /Folder2 RACH &

監視するすべてのフォルダーで最初のスクリプトを呼び出す 2 番目のスクリプトを作成して、フォルダーごとに 1 つのスクリプトを実行することができます。

于 2013-11-08T14:40:07.723 に答える