如何设置 CRON 作业在 Linux 中每10秒运行一次?

我需要从开始时每10秒运行一次 CRON作业。

在 Linux 中如何从 CRON作业开始每10秒运行一次?

我试图解决以下问题: 当我在04:28:34提出一个请求(或开始)时,它应该在04:28:44开始,而不是在4:28:40

这就是我所做的

# m h  dom mon dow   command
*/10 * * * * /usr/bin/wget http://api.us/application/

我做错了什么? 为什么这不触发 wget每10秒?

191470 次浏览

为了详细说明 Sougata Bose 的答案,我认为 OP 希望从开始时每10秒运行一次命令,而不是在第一分钟后的每10秒以及随后的每一分钟运行一次。

Cron 只有1分钟的分辨率(我认为还有其他工具可能有更好的分辨率,但它们在 Unix 上并不标准)。

因此,要解决您的问题,您需要60秒/10秒 = 6个 cron 作业,每个作业都有一个睡眠时间。

例如,运行 crontab-e 并在选择的编辑器中添加以下代码行:

* * * * * ( /usr/bin/wget http://api.us/application/ )
* * * * * ( sleep 10 ; /usr/bin/wget http://api.us/application/ )
* * * * * ( sleep 20 ; /usr/bin/wget http://api.us/application/ )
* * * * * ( sleep 30 ; /usr/bin/wget http://api.us/application/ )
* * * * * ( sleep 40 ; /usr/bin/wget http://api.us/application/ )
* * * * * ( sleep 50 ; /usr/bin/wget http://api.us/application/ )

改为使用 watch; 例如:

watch -n10 -x your_command

另一个选择是用 crontab -e编辑 crontab,然后写:

* * * * * for i in {1..6}; do /usr/bin/wget http://api.us/application/ & sleep 10; done

*/10 * * * *将每10分钟运行一次。
*/10 * * * * *将每10秒运行一次。

您可以在 Cron 编辑器中查看更多选项。

如果某个程序应该每10秒运行一次,那么它就不必是 cron 作业。它可以是一个无休止循环的脚本,里面有睡眠,比如:

while true
do
# or whatever command you need to run
rm -rf /var/www/some-directory
sleep 10
done

运行它

nohup bash my-endless-script.sh

它会在后台运行,如果你关闭终端,它也会继续运行。

您可以使用 kill 命令终止运行。

在秒中使用逗号字段也可以:

0,10,20,30,40,50 * * * * *