実行する操作がリモートサーバーにある場合、Inotifywaitは実行されません。

実行する操作がリモートサーバーにある場合、Inotifywaitは実行されません。

inotifywaitを使用してファイルの生成を監視し、ファイルが生成されるたびに長いスクリプトを実行しようとしています。実行するタスクが同じサーバー上にある場合は、すべてがスムーズに実行されます。ただし、リモートサーバーで何かを行う必要がある場合は、監視対象のディレクトリに2つのファイルが作成されていても、そのタスクは一度だけ実行されます。

これは効果がありますファイルが2つ以上作成されても同じです。 :

d="path/dir/path/"
    inotifywait -m  -e  create --format '%f' "${d}" | while read FILENAME
    do
        
        IFS='-' read -r -a action <<< $FILENAME
        if  [ ${action[0]} = "dothing" ]
    
        then 
    
                rsync -r -v /var/www/site1.com/sub/ /var/www/site2.com/sub/
                     
        fi 
    done

これはうまくいきません(他のサーバーとの対話が含まれます)。複数のファイルが作成されても一度だけ実行されます。

d="path/dir/path/"
inotifywait -m  -e  create --format '%f' "${d}" | while read FILENAME
do
    
    IFS='-' read -r -a action <<< $FILENAME
    if  [ ${action[0]} = "dothing" ]

    then 

            ssh root@server2ip   "rsync -r -v root@server1ip:/var/www/site1.com/sub/ /var/www/site2.com/sub/"
                 
    fi 
done

答え1

追加しました0<&-私のコマンドの終わりに働いた。

d="path/dir/path/"
inotifywait -m  -e  create --format '%f' "${d}" | while read FILENAME
do
    
    IFS='-' read -r -a action <<< $FILENAME
    if  [ ${action[0]} = "dothing" ]

    then 

            ssh root@server2ip   "rsync -r -v root@server1ip:/var/www/site1.com/sub/ /var/www/site2.com/sub/" 0<&-
                 
    fi 

完璧

関連情報