文章目录
- 1.定时任务的基本概述
- 1.什么是crond
- 2.为什么使用?
- 3.定时任务主要分
- 2.计划任务时间管理
- 3.计划任务编写实践
- 4.计划任务如何调试
1.定时任务的基本概述
1.什么是crond
crond就是计划任务,类似于我们平常生活的闹钟定时执行.
crond只能控制,这个任务多久 运行一次。 至于这是什么任务 与 crond 无关。
2.为什么使用?
- 主要啊做一下定期性的任务
比如: 凌晨3点定时备份数据。比如:11点开启网站抢购接口,12点关闭网站抢购接口。
3.定时任务主要分
1.系统级别的定时任务: 临时文件清理、系统信息采集、日志文件切割
2.用户级别的定时任务: 定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据
2.计划任务时间管理
1.Crontab配置文件记录了时间周期的含义,按分计算
- 表示任意的(分、时、日、月、周)时间都执行
-表示一个时间范围段, 如5-7点
, 表示分隔时段, 如6,0,4表示周六、日、四
/1 表示每隔n单位时间, 如*/10 每10分钟
2.了解crontab的时间编写规范
00 02 * * * ls #每天的凌晨2点整执行
00 02 1 * * ls #每月的1日的凌晨2点整执行
00 02 14 2 * ls #每年的2月14日凌晨2点执行
00 02 * * 7 ls #每周天的凌晨2点整执行
00 02 * 6 5 ls #每年的6月周五凌晨2点执行
00 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2点执行
*/10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次
00 00 14 2 * ls #每年2月14日的凌晨执行命令
*/5 * * * * ls #每隔5分钟执行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行
00 02 1-8 * * ls #每月1号到8号凌晨2点执行
0 21 * * * ls #每天晚上21:00执行
45 4 1,10,22 * * ls #每月1、10、22日的4:45执行
45 4 1-10 * * l #每月1到10日的4:45执行
3,15 8-11 */2 * * ls #每隔两天的上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一小时执行
15 21 * * 1-5 ls #周一到周五每天晚上21:15执行
3.使用crontab编写cron定时任务*
参数 含义-e 编辑定时任务-l 查看定时任务-r 删除定时任务-u 指定其他用户
3.计划任务编写实践
.案例:每天凌晨3点做一次备份?备份/etc/目录到/backup下面 tar
1) 将备份命令写入一个脚本中
2) 每天备份文件名要求格式: 2020-01-01_hostname_etc.tar.gz
3) 存放备份内容的目录要求只保留三天的数据
4) 在执行计划任务时,不要输出任务信息
1)编写一个脚本
[root@container ~]# cat /opt/backup.sh
#!/usr/bin/bash#1.使用tar命令备份/etc目录到backup目录
mkdir -p /backup
tar czf /backup/$(date +%F_%H_%M)_$(hostname)_etc.tar.gz /etc/#2.保留最近3天的数据,其余全部删除
find /backup -type f -name "*.tar.gz" -mtime +3 -delete
给文件赋执行权限
[root@container ~]# chmod +x /opt/backup.sh
查看sh脚本命令位置
[root@syc~]# which sh
/usr/bin/sh[root@syc~]# /usr/bin/sh /opt/backup.sh #等于sh执行了脚本,前面的路径是sh命令的存放位置
tar: 从成员名中删除开头的“/”
使用脚本路径加文件路径降低报错[root@container ~]# /usr/bin/sh /opt/backup.sh
#脚本编写好了,一定要测试,测试成功后,将成功的命令,在写入crontab中。
- 添加定时任务
[root@container ~]# crontab -e
#备份etc目录到/backup
#00 03 * * * /usr/bin/sh /opt/backup.sh &>/dev/null
* * * * * /usr/bin/sh /opt/backup.sh &>/dev/null
3.crond注意的事项
- 给定时任务注释
- 将需要定期执行的任务写入Shell脚本中,避免直接使用命令无法执行的情况tar date
- 定时任务的结尾一定要有&>/dev/null或者将结果追加重定向>>/tmp/date.log文件
- 注意有些命令是无法成功执行的 echo “123” >>/tmp/test.log &>/dev/null
5.如果一定要是用命令,命令必须使用绝对路径
4.crond如何备份
- 通过查找/var/log/cron中执行的记录,去推算任务执行的时间
- 定时的备份/var/spool/cron/{usernmae} #这个文件是定时任务存放路径下面的文件名字取决于谁创建的定时任务
[root@syc/backup]# ls /var/spool/cron/ 查看定时任务发现root用户创建了一个
root
[root@syc/backup]# cat /var/spool/cron/root 查看创建的有那些定时任务可以备份这个文件
#* * * * * /usr/bin/sh /opt/backup.sh &>/dev/null
5.crond如何拒绝某个用户使用
#1.使用root将需要拒绝的用户加入/etc/cron.deny
[root@xuliangwei ~]# echo “xuliangwei” >> /etc/cron.deny
#2.登陆该普通用户,测试是否能编写定时任务
[oldboy@xuliangwei ~]$ crontab -e
You (xuliangwei) are not allowed to use this program (crontab)
See crontab(1) for more information
4.计划任务如何调试
1.crond调试
1) 调整任务每分钟执行的频率, 以便做后续的调试。
1.先手动执行没问题。
2.crond 每分钟执行以下,进行测试。
3.调整为需要执行的时间,进行执行。
2) 如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。
3) 命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。
4) 通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。
2.crond编写思路
1.手动执行命令,然后保留执行成功的结果。
2.编写脚本
脚本需要统一路径/scripts
脚本内容复制执行成功的命令(减少每个环节出错几率)
脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null
3.执行脚本
使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash)
执行脚本成功后,复制该执行的命令,以便写入cron
4.编写计划任务
加上必要的注释信息, 人、时间、任务
设定计划任务执行的周期
粘贴执行脚本的命令(不要手敲)
5.调试计划任务(进行确认检查)
增加任务频率测试
检查环境变量问题
检查crond服务日志
------------------总结:
分 时 日 月 周
-
, 1,3,5
/