我需要一系列命令或一个可以休眠的命令,直到下一次出现“ 4:00”之类的特定时间为止。
我该怎么做?
该at
命令或cronjob是不可选项,因为我一定不能离开我当前所在的脚本。
我正在谈论的特定情况是在屏幕上运行的脚本。我不要停止脚本本身来执行脚本,这一点非常重要,因为在脚本的某些地方存储着许多重要的变量。脚本不总是应该定期执行。它只需要在特定时间执行。
如果脚本必须创建任何文件或任何其他任务(例如cronjobs或其他屏幕),那将是非常有益的。这只是设计问题。
我只是有一个可怕的主意:
difference=$(($(date -d "4:00" +%s) - $(date +%s)))
if [ $difference -lt 0 ]
then
sleep $((86400 + difference))
else
sleep $difference
fi
您有更好的主意吗?
如果需要,将添加更多信息!
terdon的建议可以奏效,但我想我的效率更高。
difference=$(($(date -d "4:00" +%s) - $(date +%s)))
if [ $difference -lt 0 ]
then
sleep $((86400 + difference))
else
sleep $difference
fi
这是在计算给定时间与当前时间之间的差异(以秒为单位)。如果数字为负数,我们必须加一整天的秒数(精确为86400)才能获得我们必须睡觉的秒数;如果数字为正数,则可以使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句