运行 在 CentOS 后台每 30 秒执行一次命令

Run command every 30 seconds in background on CentOS

标题说明了一切:

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

默认情况下,cron 无法将作业安排在 运行 秒内。您最多可以做的就是每分钟 运行 它。

1) 运行 它由一个 cron

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

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

2) 运行 使用 watch

运行 使用 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) 使用替代 cron 代替默认 linux cron(使用 fcron

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