服务器产生大量数据,我希望尽可能连续地下载这些数据。最简单的想法是使用
watch rsync ...
Run Code Online (Sandbox Code Playgroud)
据我了解,watch
将rsync
每 2 秒调用一次。
那么关键问题是:如果rsync
在这 2 秒内没有退出会发生什么?rsync
无论如何,它会每 2 秒开始一个新的,还是会等到前一个rsync
终止?
您可以通过运行类似的东西来检查这一点
watch "date >> watch.log; echo Sleeping; sleep 10"
Run Code Online (Sandbox Code Playgroud)
这将使用默认的两秒间隔。如果你让它运行一会儿,你会看到它watch.log
每十二秒记录一次日期和时间——所以watch
运行它的命令,等待它完成,然后在再次运行命令之前等待配置的时间间隔。
符合测试
watch updatedb
Run Code Online (Sandbox Code Playgroud)
它会等待程序完成,然后再开始另一个会话。
我不确定使用 watch 运行 rsync 是否有意义。如果要触发定期运行,请使用 cron。
如果您想更频繁地运行 rsync,请编写带有永远循环的脚本(而 true 则这样做)并使用 pgrep 来检测正在运行的 rsync。如果检测到,请等待定义的时间并在周期的另一次迭代中进行测试。