我需要从开始时间起每 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
?
为了详细说明 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/ )
另一种选择是使用
crontab -e
编辑 crontab 并写入:
* * * * * for i in {1..6}; do /usr/bin/wget http://api.us/application/ & sleep 10; done
在秒字段中使用逗号也可以:
0,10,20,30,40,50 * * * * *
使用
watch
代替;例如:
watch -n10 -x your_command
如果某件事应该每 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命令终止运行。