一、计划任务概述
1.计划任务类别
一次性计划任务
−在预先指定的日期/时间执行,只执行一次
−系统服务atd、配置工具at
周期性计划任务
−按预先指定的时间点/间隔频率执行,反复执行多次
−系统服务crond、配置工具crontab
2.计划任务的授权
默认情况下,任何用户都可以安排各自的任务
但在必要时,管理员可以启用授权控制
−at 任务:/etc/at.allow、/etc/at.deny
−cron任务:/etc/cron.allow、/etc/cron.deny
[root@hadoop ~]# ls /etc/{at,cron}*.{allow,deny}
ls: cannot access /etc/at*.allow: No such file or directory
ls: cannot access /etc/cron*.allow: No such file or directory
/etc/at.deny /etc/cron.deny
1. 如果allow文件存在,则仅允许指定的用户
2. 否则检查deny文件,除指定用户外其余都允许
3. 如果两个文件都不存在,则只允许root使用
二、at一次性计划任务
1.at任务机制
atd服务相关
−需要启用atd服务,一次性计划任务才会生效
−任务存放位置:/var/spool/at/用户名
配置at任务
−用法:at [HH:MM] [yyyy-mm-dd]
2.添加at一次性任务
[root@hadoop ~]# service atd restart
Stopping atd: [ OK ]
Starting atd: [ OK ]
[root@hadoop ~]# at 19:37 2202-08-15 //按Ctrl+d键提交计划
任务需求
−计划于当前晚上21:30 自动重启系统
[root@hadoop ~]# at 21:30 //定于21:30重启系统
3.查询at一次性任务
任务需求
−查询尚未执行的at 一次性计划任务
[root@hadoop ~]# atq //列出at任务队列
[root@hadoop ~]# at -c 2 //查询任务2详情(末尾)
4.删除at一次性任务
任务需求
−删除指定的at 一次性计划任务
[root@hadoop ~]# atrm 2 //删除指定的计划
[root@hadoop ~]# atq //再次查询,任务已消失
三、crontab周期性任务
1.crontab任务机制
crond服务相关
−需要启用crond 服务,周期性计划任务才会生效
−任务存放位置:/var/spool/cron/用户名
默认的计划任务
−全局配置:/etc/crontab
−系统计划:/etc/cron.*
[root@hadoop ~]# ls -d /etc/cron*
/etc/cron.d /etc/cron.daily /etc/cron.deny
2.crontab配置记录格式
参考全局配置/etc/crontab
−分钟小时日期月份星期可执行语句
3.任务时间点范例
四、周期性任务实例
1.管理crontab任务记录
编辑周期性计划任务
−crontab-e [-u 用户名]
查看周期性计划任务
−crontab-l [-u 用户名]
删除周期性计划任务
−crontab-r [-u 用户名]
2.crontab配置实例
任务需求
−每天早上07:30 开启sshd服务
−每天晚上23:30 关闭sshd服务
五、anacron任务补做机制
1.anacron工作机制
适合不需要24小时持续运行的主机
−任务周期:每小时检查一次,最近x天以内的任务
−由crond服务调度检查,执行被错过的任务操作
2.anacron配置解析
任务记录文件
−位于/var/spool/anacron/任务名称,其中记录了此任务最近一次被执行的日期,以判断是否过期−比如:对于每周的任务,如果记录的日期与当前的日期相差超过7天,则需要补做
[root@hadoop ~]# cat /var/spool/anacron/cron.weekly
20220426
六、anacron配置实例
1.案例需求及实现
任务需求
−每天执行:备份/home 目录为/opt/home.tgz
−如果错过了,则延迟3分钟后补做
2.验证案例效果
自动测试:由crond服务每小时检查一次
手动测试:anacron-n
[root@hadoop ~]# anacron -n //手动检查anacron任务
[root@hadoop ~]# cat /var/spool/anacron/anatest //确认执行日期
[root@hadoop ~]# ls -lh /opt/abc.txt //确认任务结果