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
日程是否符合预期。