Bash 每n秒复制一次

Bash 每n秒复制一次,bash,sleep,background-process,cp,Bash,Sleep,Background Process,Cp,我有一个sleep和copy函数来检索集群节点上运行的模拟的每日输出。基本上是这样的: sleep_and_copy() { while true; do sleep 85600s copy_data done } 其中,copy\u data将执行复制。问题是,copy_data需要花费大量时间来执行。换言之,我的拷贝仅在85600秒以上的时间内进行一次拷贝 有没有办法精确地每n秒执行一次复制?要每24小时(=86400秒)运行一次复制脚本,请使用cron作业!这还可以确保任务在重新启动后运

我有一个sleep和copy函数来检索集群节点上运行的模拟的每日输出。基本上是这样的:

sleep_and_copy() {
while true; do
sleep 85600s
copy_data
done
}
其中,
copy\u data
将执行复制。问题是,
copy_data
需要花费大量时间来执行。换言之,我的拷贝仅在85600秒以上的时间内进行一次拷贝


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

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

如果确实希望使用脚本并每85600秒运行一次,只需执行以下操作:

while true; do
  sleep 85600s
  copy_data &
done

&
启动
复制数据在后台过程中所做的任何操作,并立即返回。

上述答案在技术上是正确的,但我倾向于等待第一次复制(以防尚未完成),否则可能会导致损坏:

while true; do
  sleep 85600s
  wait
  copy_data &
done

copy\u data
替换为
copy\u data&
?是否有bash函数来计算执行某项操作所需的时间?还是给出当前时间的函数?只需计算出所需的秒数,从85600秒中减去,然后睡眠。也许可以看看cron作业?顺便说一句:看看bash的特殊变量seconds:
seconds=0;睡眠5;echo$SECONDS
是否有85600个输入错误和86400个正确值?那么我推荐一份工作。