我需要从开始时间起每10秒运行一次CRON作业。在Linux中,如何从CRON作业启动时起每10秒运行一次?我试图解决这个问题如下:当我在04:28:34发出请求(或开始)时,它应该在04:28:44开始,而不是在4:28:40这就是我所做的
CRON
# m h dom mon dow command */10 * * * * /usr/bin/wget http://api.us/application/
我做错了什么?为什么不是每10秒触发一次wget?
wget
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/ )
3wabscal2#
另一种选择是使用crontab -e编辑crontab并写入:
crontab -e
* * * * * for i in {1..6}; do /usr/bin/wget http://api.us/application/ & sleep 10; done
rt4zxlrg3#
*/10 * * * *将每10分钟运行一次。*/10 * * * * *将每10秒运行一次。您可以查看cron editor以获得更多选项。
*/10 * * * *
*/10 * * * * *
oalqel3c4#
在秒字段中使用逗号也很有效:
0,10,20,30,40,50 * * * * *
lsmd5eda5#
使用watch代替;例如:
watch
watch -n10 -x your_command
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命令来终止运行。
6条答案
按热度按时间j0pj023g1#
为了详细说明Sougata Bose的回答,我认为OP希望从开始时间起每10秒运行一次命令;而不是第一分钟后的10秒,以及随后的每一分钟。
cron只有1分钟的分辨率(我认为还有其他工具可能有更好的分辨率,但它们不是unix上的标准)。
因此,要解决您的问题,您需要60秒/ 10秒= 6个cron作业,每个作业都有一个睡眠。
例如,运行crontab -e并将以下行添加到您选择的编辑器中:
3wabscal2#
另一种选择是使用
crontab -e
编辑crontab并写入:rt4zxlrg3#
*/10 * * * *
将每10分钟运行一次。*/10 * * * * *
将每10秒运行一次。您可以查看cron editor以获得更多选项。
oalqel3c4#
在秒字段中使用逗号也很有效:
lsmd5eda5#
使用
watch
代替;例如:des4xlb06#
如果某个东西应该每10秒运行一次,那么它不必是cron job。它可以是一个带有无限循环的脚本,里面有睡眠,比如:
并运行它
这将在后台运行它,如果你关闭终端,它也会继续运行。
你可以使用kill命令来终止运行。