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

zd287kbt  于 2023-10-23  发布在  Apache
关注(0)|答案(6)|浏览(137)

我需要从开始时间起每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/

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

j0pj023g

j0pj023g1#

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

3wabscal2#

另一种选择是使用crontab -e编辑crontab并写入:

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

rt4zxlrg3#

*/10 * * * *将每10分钟运行一次。
*/10 * * * * *将每10秒运行一次。
您可以查看cron editor以获得更多选项。

oalqel3c

oalqel3c4#

在秒字段中使用逗号也很有效:

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

lsmd5eda5#

使用watch代替;例如:

watch -n10 -x your_command
des4xlb0

des4xlb06#

如果某个东西应该每10秒运行一次,那么它不必是cron job。它可以是一个带有无限循环的脚本,里面有睡眠,比如:

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命令来终止运行。

相关问题