或者:如何防止sudo'ed rsync在while循环中无限激发? 因为这就是(感觉)正在发生的事情,而我却没有得到它。
我正在尝试设置一个用于同步修改过的文件的手表,它运行正常。但是,一旦我向sudo
命令引入了必需的rsync
,单个inotify
事件会导致rsync
命令无限期地触发。
#!/usr/bin/env bash
inotifywait -m -r --format '%w%f' -e modify -e move -e create -e delete /var/test | while read line; do
sudo rsync -ah --del --progress --stats --update "$line" "/home/test/"
done
编辑文件时,rsync
进入快速点火模式。但是丢失sudo
(并使用你有权限的文件夹),脚本按预期工作。
sudo
命令使其正常工作?答案 0 :(得分:1)
我有答案,通过实验找到它。但我不知道为什么会这样。请有人告诉我为什么此循环中的sudo
会破坏预期的阻止行为。
由于sudo
打破了脚本,我们可以使用包装器与sudo
保持距离:
这是正确的:
inotifywait -m -r --format '%w%f' -e modify /var/test | while read line; do
sh -c 'sudo rsync -ah "$line" "/home/test/"'
done
奇怪的是:将sudo
从包装中拉出来,我们又有了旧的错误行为。很奇怪。
这是错误的:
inotifywait -m -r --format '%w%f' -e modify /var/test | while read line; do
sudo sh -c 'rsync -ah "$line" "/home/test/"'
done