参考文章:
通常在工作中需要数据库建立一个定时任务,选择在Linux下使用crontab来添加定时任务,执行shell命令;
1、定时任务编辑命令语法
参数 | 含义 | 指定示例 |
-l | 查看定时任务内容。提示:l为list缩写 | crontab -l (重点) |
-e | 编辑定时任务内容。提示:e为edit | crontab -e (重点) |
-i | 删除定时任务内容,删除前会提示确认 | crontab -ri |
-r | 删除定时任务内容 | crontab -r |
-u | 指定使用的用户执行任务。提示:u为user | Crontab u huhao -l |
2、定时任务时间段含义
时间记忆口诀: 分时日月周。取值范围记忆:正常日期时间范围。
3、用户定时任务特殊字符含义
提示:
①cmd是执行的命令或脚本
②每个列之间必须要有一个空格,可以有多个空格
① * 表示 "每" 的意思(每日、每月)
00 23 * * * cmd
表示每天23点0分执行定时任务
② 列举(逗号,表示分隔时段的意思 1,2,3,5)
00 1,2,3,5 * * * cmd
表示每1点,2点,3点,5点每列举点执行定时任务
③ /n n是任意数字 即"每隔n单位时间"
n 代表自然数字
例如:每10分钟执行一次任务可以写成
*/10 * * * * cmd
4、用户定时任务实例
特殊注意点:
* * * * * cmd
00 * * * * cmd
第一个"*" 表示每分执行一次
第一个"00"表示每小时执行一次
例子1:
30 */6 * * * /bin/sh /scripts/huhao.sh
第一列为30,表示30分钟
第二列*/6代表每6个小时,也相当于6、12、18、24的作用。此定时任务的意思是每隔6个小时的半点时刻执行
例子2:
30 8-18/2 * * * /scripts/huhao.sh
其中的第一列为30,表示30分钟
第二列8-18/2代表在 早晨8点到下午18点之间 每隔2小时,也相当于把8、10、12、14、16、18单独列出。那么,此定时任务的意思就是早晨8点到下午18点之间,每隔2小时的半点时刻执行/scripts/huhao.sh脚本任务
例子3:
30 21 * * * /scripts/huhao.sh
表示每晚的9点30分执行重启
例子4:
45 4 1,10,22 * * /scripts/huhao.sh
表示每月1、10、22日的凌晨4:45分重启
例子5:
10 1 * * 6,0 /scripts/huhao.sh
表示每周六、日的凌晨1点10分重启
例子6:
0,30 18-23 * * * /scripts/huhao.sh
表示每晚18点至23点之间每隔30分钟重启
例子7:
00 */1 * * * /scripts/huhao.sh
表示每隔1个小时整点重启
例子8:
* 23,00-07/1 * * * /scripts/huhao.sh
本例并不表示晚上23点和早上0-7点之间每隔一小时重启。
要说明的是,以上结果是不规范的,也是不对的。大家想想为什么?
以上定时任务的第一列为*,表示每分都执行任务即晚上23点和早上0-7点之间每隔一小时的没法都重启(很可怕吧)
例子9:
30 09 * * 0 去参加浩哥才艺
表示每周日上午9:30去参加浩哥才艺
实践:
每分钟追加一次huhao字符串到/tmp/huhao.log里
思路分三步走:
1> 命令行执行成功
[root@admin~]# echo "huhao" >>/tmp/huhao.log
[root@admin~]# cat /tmp/huhao.log
huhao
2>配置定时任务
[root@admin ~]#crontab -e 编辑定时任务配置
* * * * * echo "huhao">>/tmp/huhao.log
~
"/tmp/crontab.45pNPv" 1L, 40C written
crontab: installing new crontab
[root@admin ~]#crontab -l 查看定时任务列表
* * * * * echo "huhao">>/tmp/huhao.log
3>检查
[root@admin~]# tail -f /tmp/huhao.log
huhao 每隔1分钟打印一次
huhao