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
완벽한