0

または:sudoされたrsyncがwhileループで無限に起動するのを防ぐにはどうすればよいですか? それが(のように)起こっていることであり、私はそれを理解していないからです。

変更されたファイルを同期するための時計を設定しようとしていますが、正常に動作します。ただし、コマンドにrequiredを導入するとsudo、 1つのイベントによってコマンドが無期限に起動します。rsyncinotifyrsync

#!/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ただし、 (もちろん、アクセス許可のあるフォルダーを使用すると)失われ、スクリプトは期待どおりに機能します。

  1. どうしてこれなの?
  2. sudoコマンドでこれを正しく機能させるにはどうすればよいですか?
4

1 に答える 1

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
于 2012-12-29T16:43:52.870 に答える