小萝卜干的技术分享

15 object(s)
 

Crontab详解

以前每次要用到Crontab的时候,都要去到处找语法格式,现在找到了一张详解的图,终于可以不用到处找资料啦!
 title=
Crontab设置有个误区需要注意,它的时间不是指每隔多少时间执行一次,而是在指定的那个点去执行。
举个简单例子:
30 * * * * date
这个表示每个小时的30分,执行一次date命令,即0:30,1:30,2:30......才会执行,所以该命令其实是每个小时执行一次。
更多例子:

# 每个小时整点执行
0 * * * * date
# 每个小时整点,以及每个小时第30分钟执行
0,30 * * * * date
# 每个月10号的每个小时的第59分钟执行
59 * 10 * * date
# 每个月10号为星期一的话,就每个小时的第59分钟执行。如果那天不是星期一则不会执行
59 * 10 * 1 date

综上所述,crontab执行的最小时间单位应该为分。如果要精确到秒,crontab原生是不支持的。但是我们有一些变通的办法:通过延时方法 sleep N 来实现每N秒执行。
举个例子,每隔5秒执行一次:

* * * * * /usr/bin/curl http://www.test.com
* * * * * sleep 5; /usr/bin/curl http://www.test.com
* * * * * sleep 10; /usr/bin/curl http://www.test.com
* * * * * sleep 15; /usr/bin/curl http://www.test.com
* * * * * sleep 20; /usr/bin/curl http://www.test.com
* * * * * sleep 25; /usr/bin/curl http://www.test.com
* * * * * sleep 30; /usr/bin/curl http://www.test.com
* * * * * sleep 35; /usr/bin/curl http://www.test.com
* * * * * sleep 40; /usr/bin/curl http://www.test.com
* * * * * sleep 45; /usr/bin/curl http://www.test.com
* * * * * sleep 50; /usr/bin/curl http://www.test.com
* * * * * sleep 55; /usr/bin/curl http://www.test.com