你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章
crontab是类Unix系统最好用的工具之一,用来设置定时任务,这些定时任务也被称为“Cron Jobs”。Cron通常被用于运行定时备份、监控磁盘使用情况、定期删除不需要的文件(比如日志文件)、运行系统维护任务等。本文主要介绍crontab的基础使用,基本能覆盖大部分使用场景。
分钟(0-59) 小时(0-24) 日(1-31) 月(1-12)星期(0-7) <要执行的命令>
其中星期从0到6,0表示周日,1~7对应星期一到星期日,也可以用0来表示星期日
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jo9vNIaX-1611979617517)(/images/Crontab语法格式.png)]
上图每个星号*分别对应具体的时间块(分钟、小时、日等)
执行crontab -l
可以列出当前用户的所有定时任务
如果想要编辑当前用户的定时任务,执行crontab -e
,如果是第一次编辑crontab定时任务,需要先选择想要使用的编辑器,如下所示,输入对应的编号,如输入3,选择vim编辑器。
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
选择一个适合你的编辑器,然后实际上就是使用选中的编辑器打开了一个crontab文件,在打开的文件中按照crontab的格式每添加一行语句就对应一个定时任务,当然我们也可以删除一行语句来删除一个定时任务。
* * * * * <要执行的命令>
比如每分钟往文件~/hello.txt中写入一个“hello world”,就可以在crontab文件中写入下面的crontab语句:
* * * * * echo "hello world" >> ~/hello.txt
保存、退出编辑器。然后可以通过crontab -l
看到我们刚刚添加的任务,等待几分钟就可以看到~/hello.txt文件里面多了几个"hello world"
*/5 * * * * <要执行的命令>
*/15 * * * * <要执行的命令>
27 * * * * <要执行的命令>
该定时任务每小时执行一次,每次在27分执行。
0,5,10 * * * * <要执行的命令>
将在每个小时的0分、5分、10分分别执行一次
*/30 * * * * <要执行的命令>
如果现在是10点整,那么该任务将分别在10:30 11:00 11:30 … 执行。
需要注意的是具体的时间和设置定时任务的时间是无关的,比如我们在10:17设置了定时任务,那么这个定时任务执行的时间不是10:47、11:17、11:47等,而是10:30、11:00、11:30等.
0 * * * * <要执行的命令>
0 */2 * * * <要执行的命令>
如果当前时间是10点,那么下次执行时间就是12点
0 0 * * * <要执行的命令>
该命令将会在每天的00:00分执行
0 3 * * * <要执行的命令>
0 0 * * 7 <要执行的命令>
0 0 * * 1-5 <要执行的命令>
0 0 1 * * <要执行的命令>
该定时任务会在每个月的1号,0点0分执行
15 16 10 * * <要执行的命令>
0 0 1 */3 * <要执行的命令>
该定时任务会在每个季度的第一个月的1号0点0分执行
5 0 * 4 * <要执行的命令>
该定时任务会在每年4月份的每天的0点5分执行
0 0 1 */6 * <要执行的命令>
0 0 1 1 * <要执行的命令>
该定时任务会在每年的1月1号0点0分执行
除了上述方式,还可以通过标签的方式来设置定时任务,crontab支持的定时标签见下表
@reboot | 在系统启动的时候执行一次 |
@yearly | 每年执行一次 |
@annually | 和@yearly相同 |
@monthly | 每个月执行一次 |
@weekly | 每周周星一次 |
@daily | 每天执行一次 |
@midnight | 和@daily相同 |
@hourly | 没消失执行一次 |
@reboot <要执行的命令>
该定时任务在系统每次启动后执行
crontab -r
使用man crontab
可以查看crontab更多细节内容
另外,通过基于网页的crontab语法生成器可以快速地检查crontab语句是否符合预期或者根据我们期望的间隔时间快速生成想要的crontab语句,下面两个网站都是英文的,但是都是很简单的英文,很容易上手。
在crontab.guru 中输入crontab语句,网站将会告诉我们这段语句的含义,以及执行的具体时间,可以用来检验编写的crontab语句是否正确
在crontab-generator.org中可以设定我们想要的运行间隔,然后网页会自动生成对应的crontab语句。
本文为翻译文章,原文请点击 www.ostechnix.com/a-beginners-guide-to-cron-jobs