18 定时任务

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 
原文地址:https://www.cnblogs.com/zhaokunhao/p/14597867.html