수행할 작업이 원격 서버에 있는 경우 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

이건 작동하지 않아(다른 서버와의 상호 작용이 포함됩니다). 파일이 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 

            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 

완벽한

관련 정보