呼び出されたコマンドがまだ完了していない場合、「ウォッチ」で何が起こりますか?

呼び出されたコマンドがまだ完了していない場合、「ウォッチ」で何が起こりますか?

サーバーは大量のデータを生成し、このデータをできるだけ継続的にダウンロードしたいと思います。最も簡単なアイデアは次のとおりです。

watch rsync ...

私が理解したのは2秒ごとにwatch呼び出されます。rsync

したがって、重要な質問はrsync2秒以内に終了しないとどうなりますか?です。rsyncとにかく、2秒ごとに新しいものを始めるのか、それとも古いものがrsync終わるのを待つのでしょうか?

答え1

次のコマンドを実行してこれを確認できます。

watch "date >> watch.log; echo Sleeping; sleep 10"

デフォルトの2秒間隔が使用されます。しばらく実行すると、watch.log12秒ごとに日付と時刻が記録されることがわかります。したがって、watch対応するコマンドを実行してください。完了するまでお待ちください。、コマンドを再実行する前に、設定された間隔を待ってください。

答え2

テストに会う

watch updatedb

別のセッションを開始する前にプログラムが完了するのを待ちます。

watchを使ってrsyncを実行するのが適切かどうかはわかりません。定期的な実行を実行するには、cronを使用してください。

rsyncをより頻繁に実行するには、無限ループ(trueではこれを行う)を含むスクリプトを作成し、pgrepを使用してrsyncの実行を検出します。検出されたら、定義された時間待ってから別のサイクルの繰り返しでテストします。

関連情報