每 n 秒复制一次

Posted

技术标签:

【中文标题】每 n 秒复制一次【英文标题】:Copy every n seconds 【发布时间】:2018-01-06 03:27:48 【问题描述】:

我有一个睡眠和复制功能来检索在集群节点上运行的模拟的每日输出。基本上是这样的:

sleep_and_copy() 
while true; do
sleep 85600s
copy_data
done

copy_data 将执行复制。问题是copy_data 需要很长时间才能执行。换句话说,我的副本仅每 85600 秒 + 一次复制一次

有没有办法每 n 秒精确地执行一次复制?

【问题讨论】:

copy_data &替换copy_data? 是否有一个 bash 函数来计时执行某事需要多长时间?还是给出当前时间的函数?只需计算花费了多少秒,从 85600 秒中减去它,然后为此休眠。 也许看看 cron 作业? 顺便说一句:看看 bash 的特殊变量 SECONDS:SECONDS=0; sleep 5; echo $SECONDS 85600 是错字,86400 是正确的值吗?那我推荐一个cronjob。 【参考方案1】:

要每 24 小时 (=86400 秒) 运行一次复制脚本,请使用 cron 作业!这也确保任务在重新启动后运行。

如果你真的想使用一个脚本并且每 85600s 运行一次,你可以简单地执行以下操作:

while true; do
  sleep 85600s
  copy_data &
done

& 启动 copy_data 在后台进程中执行的任何操作并立即返回。

【讨论】:

【参考方案2】:

上述答案在技术上是正确的,但我倾向于等待第一个副本(以防它尚未完成),否则您可能会受到损坏:

while true; do
  sleep 85600s
  wait
  copy_data &
done

【讨论】:

以上是关于每 n 秒复制一次的主要内容,如果未能解决你的问题,请参考以下文章

如何允许用户每“n”秒刷新一次表?

每 n 秒检索一次 Android 电池指标 [高效]

sh 每N秒重启一次bash进程

如何每隔N秒检查一次android中的Internet连接

在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]

python循环控制间隔。