一种设置程序每日运行时间的简洁方法

一种设置程序每日运行时间的简洁方法

有点菜鸟问题,但我希望让我的网络守护进程(wicd)每天在我的机器上运行,仅从早上 5 点到 6 点和下午 6 点到晚上 7 点运行,无论我的机器何时打开,换句话说,如果该进程正在运行,但不是一天中的那个时间,我需要它终止。做到这一点最简单的方法是什么?显然,如果我使用 crontab 并编写一个 cronjob,其中 wicd 在早上 5 点和下午 6 点运行,例如,killall 在早上 6 点和晚上 7 点摆脱它,这会导致问题,因为如果我在早上 5:04 启动机器,wicd 将不会运行最初,所以我可以通过为其编写一个初始化脚本(我的 init 的 SysV)来使 wicd 在初始化时运行或不运行,我在其中检查一天中的当前时间,这似乎应该削减它,但这是解决方法解决此问题的唯一方法,或者是否有更简单的方法来确保程序仅在指定时间运行,无论我的计算机何时打开。

答案1

一种方法是使用CF引擎,政策大致如下:

bundle agent mybundle {

  services:
    Hr5|Hr18::
      "wicd"
        service_policy => "start";

    !(Hr5|Hr18)::
      "wicd"
        service_policy => "stop";

}

CFEngine 的默认运行间隔为每五分钟一次(中间有延迟,因此一组主机不会同时运行),因此在您的示例中,在凌晨 5:04 启动计算机后,服务将在 5 分钟内运行。然后在凌晨 6:00 之后(6:00 到 6:05 之间的某个时间)下次运行 CFEngine 时,服务将停止。

相关内容