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

问题描述 投票:0回答:7

我需要从开始时间起每 10 秒运行一次

CRON
作业。

在 Linux 中,如何从启动后每 10 秒运行一次

CRON
作业?

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

这就是我所做的

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

我做错了什么?为什么这不会每 10 秒触发一次

wget

php linux apache cron
7个回答
135
投票

为了详细说明 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/ )  

42
投票

另一种选择是使用

crontab -e
编辑 crontab 并写入:

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

28
投票

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

您可以查看 cron 编辑器以获取更多选项。


15
投票

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

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

6
投票

使用

watch
代替;例如:

watch -n10 -x your_command

5
投票

如果某件事应该每 10 秒运行一次,那么它不一定是 cron 作业。它可以是一个无限循环的脚本,其中包含 sleep,例如:

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
投票
Java Spring Boot 中的@Scheduled(cron = "n/10 * * * * *") 将 n 视为启动时间单位秒。 因此,对于上述 4 秒后,@Scheduled(cron = "4/10 * * * * *")

© www.soinside.com 2019 - 2024. All rights reserved.