每 130 秒运行一次的 CRON 作业

每 130 秒运行一次的 CRON 作业

是否可以创建一个每 130 秒或 2 分 10 秒运行一次的 CRON 作业。

答案1

cron 提供的最细粒度是 1 分钟。我想您可以每 1 分钟运行一次作业,并让它确定是否需要在下一分钟之前运行,等待正确的时间,然后继续。

  • 计算自午夜以来的秒数模 130。
  • 从 130 中减去这个数字
  • 如果答案小于 60,请等待该秒数并继续。
  • 如果答案是 130 立即继续

答案2

如果您使用的是 systemd 发行版,则可以使用 systemd 计时器来获得这种级别的计时分辨率。根据您的使用案例,您可以将其用作 delta-t(例如,自启动后每隔 x 秒)或使用挂钟时间(例如,00:00:10、00:02:10 等)配置它。

简而言之,您将创建 2 个文件。

  1. 第一个是 .timer 文件,此处描述。这将设置计时器事件的计时并配置计时事件发生时发生的情况。有许多标准需要定义 - 例如 - 您是否希望它在启动时立即运行,然后每 130 秒运行一次?如果您处于较低的运行级别,您希望它运行吗?如果遇到错误,您希望它继续运行吗?可以说,Systemd 比使用 init 文件和 cron 作业的旧方法变得复杂得多。但是,使用它代替 cron 将解决您的计时问题。

  2. 第二个文件通常是由计时器服务调用的 .service 文件。在此文件中,您将定义 cron 作业的功能 - 一个简单的命令或调用另一个脚本以允许更复杂的任务。该服务文件通常设置为“oneshot”。看这里更多细节。

这些文件应复制到 /etc/systemd/system/ 中,您将运行以下命令来启用/启动计时器服务:

 systemctl enable mycronjob.timer
 systemctl start mycronjob.timer

您可以使用journalctl来检查/调试您的实现。有关更多信息,请参阅维基百科讨论

相关内容