如何在给定时间范围内计算机处于活动状态时立即执行脚本并且仅执行一次?

如何在给定时间范围内计算机处于活动状态时立即执行脚本并且仅执行一次?

我需要在机器打开后立即在一周中指定日期的几个小时内运行脚本。例如:每周一 07:00 至 10:00。

我知道如何使用 cron 作业独立处理“一周中某一天的几个小时之间”和“机器一打开”的时间条件。然而,到目前为止我还没有找到将两者结合起来的优雅解决方案。

我探索了在时间范围结束时运行的选项(但不是我想要的)。

我还看到了 Anacron 的选项:在之前问过的这个问题中但anacron的粒度还不够细。

我怎样才能实现这样的伪周期?我可以将 cron 作业 @reboot 与脚本结合起来吗?

谢谢你!

答案1

听起来你想要一份@reboot工作。

然后,该脚本可以检查星期几和一天中的时间:

#!/bin/sh

day=$( date +%u ) # day of week as integer, 1 == Monday
tm=$( date +$k )  # time of day, 0-23

if [ "$day" -ne 1 ] || [ "$tm" -lt 7 ] || [ "$tm" -gt 10 ]; then
    # wrong day and/or time
    exit
fi

# do stuff here

相关内容