Linux的crontab用法简介
本文简要介绍Linux中的定期执行程序crontab命令。
语法介绍
crontab的语法如下:
1 | usage: crontab [-u user] file |
其中-u可以让你设定某个用户的定期执行日程。其余三个选项的作用为:
1 | # 列出目前的crontab日程 |
新建crontab任务
除了使用crontab命令来新建任务之外,一般可以使用如下格式:
1 | # crontab format |
对于以上crontab格式的解释如下:
[MIN]代表分钟,可以取0-59。[HOUR]代表小时,可以取0-23。[DOM]代表日期,可以取1-31。[MON]代表月份,可以取1-12(或者JAN-DEC)。[DOW]代表星期几,可以取0-6(或者SUN-SAT;一般用0代表周日,但有时候也可以用7来代表周日)。[CMD]代表最后需要定期运行的命令。
此外还有几种特殊符号:
*代表任意值,比如在日期处输入*就代表每日都要执行一次。/代表间隔值,比如在分钟处输入*/5就代表每5分钟就要执行一次。-代表时间段,比如在分钟处输入0-19就代表0-19分钟里每分钟都要执行一次。,代表分隔,比如在分钟处输入3,5就代表在当分钟在3分和5分时各执行一次。
以上还可以任意组合,例如:
1-10/2,15在分钟处表示在1-10分钟内每两分钟执行一次,并且15分钟时单独执行一次。*/6,15在分钟处表示每6分钟执行一次,并且15分钟时单独执行一次。
此外,还有一些特殊关键字可以代替[MIN] [HOUR] [DOM] [MON] [DOW]:
@yearly或@annually表示0 0 1 1 *,即每年1月1日的00:00执行。@monthly表示0 0 1 * *,即每月1日的00:00执行。@weekly表示0 0 * * 0,即每周日00:00执行。@daily表示0 0 * * *,即每天00:00执行。@hourly表示0 * * * *,即每小时0分执行。@reboot代表开机时执行。
应用举例
1) 每分钟打印一次meow:
1 | * * * * * echo "meow" |
这里的「每分钟」是指:每年每个月每天每小时的每分钟,所以用了5个*。
如要在每日零点的每分钟,则可以使用* 0 * * *。每月第一天的零点的每分钟,可以使用* 0 1 * *。
2) 每天00:00执行一次ls:
1 | 0 0 * * * ls |
3) 更多举例:
接下来的例子只举例时间,不举例具体命令:
5 0 * 8 *:每年8月份的00:05。0 22 * * 1-5:每周一到周五的22:00。23 0-20/2 * * *:每天0-20时中,每两小时的23分。0 0,12 1 */2 *:每两个月的第一天中的00:00与12:00。
推荐一个网站:crontab guru。在这里你可以测试你的crontab日程是否符合预期。