【问题标题】:Run command every 30 seconds in background on CentOS在 CentOS 上每 30 秒在后台运行一次命令
【发布时间】:2018-03-21 04:57:18
【问题描述】:

标题说明了一切:

如何在 CentOS 上每 30 秒无限期地在后台运行一些命令?那就是:我希望能够在定期调用其他脚本的同时做其他事情。

【问题讨论】:

  • 如果每分钟都很好,那么 cron 作业又如何呢?否则有两个 cron 作业,一个在主要任务之前有 sleep 30
  • @sauerburger,我正在考虑这个问题,但对我来说似乎有点笨拙。有没有更好、更规范的方法来做到这一点?

标签: timer centos background-process periodic-task


【解决方案1】:

默认情况下,cron 无法将作业安排在几秒钟内运行。您最多只能每分钟运行一次。

1) 由单个 cron 运行它

要通过 cron 运行它,您可以每 30 秒创建一个 cron 条目,如下所示:

* * * * * /bin/bash -l -c "/path/to/script.sh; sleep 30 ; /path/to/script.sh"

2) 使用手表运行它

使用 watch 运行脚本((你可以从屏幕或 tmux 启动它)甚至在后台运行)

watch --interval 30 /path/to/script.sh 

3) 使用这样的 while 循环:

#!/bin/env bash
while [ true ]; do
 sleep 30
 /path/to/script.sh
done

请记住,此选项不是失败证明,因为这完全取决于您的 cron 究竟做了什么以及 cron 运行的作业需要多长时间才能完成。对于上面的示例 (3),如果 cron 需要 25 秒才能运行,那么您的脚本将被延迟等等。同样适用于选项(1)

4) 使用默认 linux cron 的替代 cron(使用 fcron

5) 类似的问题已经在 SO 上提出过,所以您可能想看看这个: How to run Cronjobs more often than once per minute?

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 2014-08-21
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2016-07-24
    • 2021-07-28
    相关资源
    最近更新 更多