crond计划任务
你可以把定时任务理解为一个闹钟。
#Crontab表达式
* * * * *
分 时 日 月 周
每天的凌晨2点 02:00 00 02 * * *
每月执行一次 00 00 01 * *
每个月的一号零点零时零分同时这一天时星期六 00 00 01 * 6
系统级别的计划任务
1、/etc/crontab
2、如下的目录
/etc/cron.hourly/ # 系统定时任务每个⼩时运⾏这个⽬录⾥的内容
/etc/cron.daily/ # 系统定时任务每天运⾏这个⽬录⾥的内容
/etc/cron.weekly/ # 系统定时任务每周运⾏这个⽬录⾥的内容
/etc/cron.monthly/ # 系统定时任务每⽉运⾏这个⽬录⾥的内容
用户级别的计划任务
crontab -e
-e : 编辑计划任务
-l : 查看计划任务
# 注:用户级别的计划任务存放在/var/spool/cron/,不同的用户存放的计划任务是以其自己的名字命名的脚本
crontab语法
* 表示任意的(分、时、⽇、⽉、周)时间都执⾏
- 表示⼀个时间范围段, 如5-7点
, 表示分隔时段, 如6,0,4表示周六、⽇、四
/1 表示每隔n单位时间, 如*/10 每10分钟
#案例
# 1 3 5
00 00 1,3,5 * *
# 1到5号
00 00 1-5
# 每几分钟,每几个小数,每几天
0/2 /2
00 0/2 00 /2
00 00 0/2 00 00 /2
定时任务编写思路
1.⼿动执⾏命令,然后保留执⾏成功的结果。
2.编写脚本
脚本需要统⼀路径/scripts 脚本内容复制执⾏成功的命令(减少每个环节出错⼏率)
3.执⾏脚本
使⽤bash命令执⾏, 防⽌脚本没有增加执⾏权限(/usr/bin/bash /bin/bash) 执⾏脚本成功后,复制该执⾏的命令,以便写⼊cron
4.编写定时任务
加上必要的注释信息, ⼈、时间、任务
设定定时任务执⾏的周期
粘贴执⾏脚本的命令(不要⼿敲)
5.调试定时任务
增加任务频率测试
检查环境变量问题(最好在脚本中重新定义环境变量PATH)
检查crond服务⽇志
总结
1.定时任务规则之前加注释
2.使⽤脚本执⾏定时任务(只有⼀条简单命令的可以直接使⽤命令执⾏)
3.运⾏脚本⼀定要⽤绝对路径执⾏,统⼀脚本位置。
4.定时任务中date命令的百分号需转义才能使⽤。
5.命令或脚本结果(正确及错误)定向到空(>/dev/null 2>&1)或追加到⽂件中 >>/tmp/oldboy.txt 2>&1
6.避免不必要的程序及命令输出,如打包命令,tar -v的显示过程的选项。
7.打包压缩使⽤相对路径(切到⽬标⽬录的上⼀级打包⽬标)
8.定时任务脚本中的程序⽂件 ,尽量⽤绝对路径,⽤户的定时任务中的⽂件默认存放在当前⽤户的家⽬录
9.系统与命令位置有关的环境变量问题,建议脚本中重新定义环境变量PATH。
习题
#每天的凌晨2点整执⾏
00 02 * * *
#每⽉的1⽇的凌晨2点整执⾏
00 02 1 * *
#每年的2⽉14⽇凌晨2点执⾏
00 02 14 02 *
#每周天的凌晨2点整执⾏
00 02 * * 0
#每年的6⽉周五凌晨2点执⾏
00 02 * 6 5
#每⽉14⽇或每周⽇的凌晨2点都执⾏
00 02 14 * 7
#每年的2⽉14⽇或每年2⽉的周天的凌晨2点执⾏
00 02 14 02 7
#每天凌晨2点,每隔10分钟执⾏⼀次
0/10 02 * * *
#每分钟都执⾏
* * * * *
#每年2⽉14⽇的凌晨执⾏命令
00 00 14 2 *
#每隔5分钟执⾏⼀次
00/5 * * * *
#每年的1⽉5⽉8⽉凌晨2点执⾏
00 02 * 1,5,8 *
#每⽉1号到8号凌晨2点执⾏
00 02 1-8 * *
#每天晚上21:00执⾏
00 21 * * *
#每⽉1、10、22⽇的4:45执⾏
45 04 1,10,22 * *
#每⽉1到10⽇的4:45执⾏
45 04 1-10 * *
#每隔两天的上午8点到11点的第3和第15分钟执⾏
3,15 8-11 0/2 * *
#晚上11点到早上7点之间,每隔两⼩时执⾏
* 23-7/2 * * *
#周⼀到周五每天晚上21:15执⾏
15 21 * * 1-5