当被调用的命令尚未完成时,“watch”中会发生什么?

当被调用的命令尚未完成时,“watch”中会发生什么?

服务器产生大量数据,我希望尽可能连续地下载这些数据。最简单的想法就是使用

watch rsync ...

据我了解,每2秒watch就会调用一次。rsync

那么关键问题是:如果rsync在那 2 秒内不退出会发生什么?rsync无论如何,它会每 2 秒启动一个新的,还是会等到前一个rsync结束为止?

答案1

您可以通过运行类似的命令来检查这一点

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

这将使用默认的两秒间隔。如果你让它运行一会儿,你会看到它watch.log每十二秒记录一次日期和时间 - 所以watch运行它的命令,等待它完成,然后等待配置的时间间隔,然后再次运行该命令。

答案2

符合测试

watch updatedb

它会等待程序完成,然后再开始另一个会话。

我不确定使用 watch 运行 rsync 是否有意义。如果要触发定期运行,请使用 cron。

如果您想更频繁地运行 rsync,请编写带有永远循环的脚本(而 true 则这样做)并使用 pgrep 来检测正在运行的 rsync。如果检测到,请等待定义的时间并在周期的另一次迭代中进行测试。

相关内容