我正在尝试使用 inotifywait 监视文件创建,并在每次创建文件时执行一个长脚本。当要执行的操作在同一台服务器上时,一切都运行顺利。但是当需要在远程服务器上执行某些操作时,即使在受监控目录中创建了 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
完毕