9.1 一次性任务计划:
9.1.1 at
at
:设置系统在某一个时间点执行的任务,执行结果以邮件的方式发送给任务发起者- 语法:
# at data_time
at>at_command1
at>at_command2
at>ctrl+d //保存退出
//注意:at任务计划需要atd服务的支持,atd服务开启方法
# systemctl start atd
# systemctl enable atd
# systemctl status atd
//Linux中设置at任务后,会在/var/spool/at/目录生成at任务计划的文件,按照文件名的排序顺序执行
- data_time时间日期写法:
绝对时间:
HH:MM:具体时间
DD.MM.YY:天.月.日
YY-MM-DD:年-月-日
MM/DD/YY:月/日/年
HH:MM YY-MM-DD
相对时间:
at now+3minutes:从任务计划创建时间开始的3分钟后执行
相关文件:
- /etc/at.allow :at任务计划的白名单,仅允许此文件中的用户执行at
- /etc/at.deny :at任务计划的黑名单,仅拒绝次文件中的用户执行at
- 系统先查找/etc/at.allow,再去查找/etc/at.deny,如果两个文件都没有,只有root用户能执行
at
命令的相关参数:- -l:查看系统中at任务列表,相当于atq
- -r:删除系统中的at列表,相当于atrm
- -d:删除系统中的at列表,相当于atrm
- -c:列出后续at任务的具体指令内容
9.1.2 batch
用法与at相同,不过batch任务计划是在CPU空闲时执行,但CPU的负载小于0.8时执行batch设定的任务
- 语法:与at基本一致,请查看at的语法和时间格式
- uptime:查看CPU平均负载
9.2 周期性任务计划
9.2.1 系统周期性任务
- 日志轮换:logrotate
- 登录文件分析:logwatch
- 创建located数据库:
- 创建man帮助信息数据库:centos6:makewathis,centos7:mandb
- RPM软件登录文件的创建
- 与网络相关的分析行为
9.2.2 用户周期性任务
- cron:设置周期性任务计划
- anacron:当cron周期性任务由于某种原因没有执行,anacron重新执行cron任务
1.cron:设置周期性任务计划
crond服务开启:
# systemctl start crond
# systemctl enable crond
# systemctl status crond
相关文件:
- /etc/cron.allow :cron任务计划的白名单
- /etc/cron.deny :cron任务计划的黑名单,系统默认情况下保留黑名单
- /etc/crontab:cron配置文件解析:
SHELL=/bin/bash //各任务计划执行使用的shell程序
PATH=/sbin:/bin:/usr/sbin:/usr/bin //PATH路径
MAILTO=root //
- /etc/cron.d:cron辅助配置文件目录(里面放的是脚本)
- cron.hourly:由cron工具去执行
- cron.daily cron.weekly cron.monthly 是由anacron工具去执行
- /var/spool/cron:用户cron任务计划的配置文件,Linux用户设置完cron任务后,会在/var/spool/cron目录下生成以用户名名称的cron文件
crontab
命令:设置/查看/删除cron任务计划,执行结果用邮件发送
- -e:编辑cron任务内容
- -u:为指定用户设置cron任务计划(只有root用户能使用)
- -l:查看cron任务列表 (/etc/crontab)
- -r:删除所有的cron列表
设置cron任务时间语法:
系统设置:
- 分 时 日 月 周 用户 命令
用户设置:
- 分 时 日 月 周 命令
时间取值范围:
- 分钟:0-59
- 小时:0-23
- 日期:1-31
- 月:1-12 (英文缩写也可以)
- 周:0-7(0和7都代表周日)(英文缩写也可以)
*
代表任意离散时间段:
,(逗号)
- 5,15,30,45,56 17 * cat /etc/fstab
- 17点当中的 5分,15分,30分,45分,56分执行这个命令
- 连续时间段:
-
(中横线) - 00 23 1-5 cat /etc/fstab
- 周一到周五,每天23点00执行这个命令
间隔时间段:
*/n
- /5 * cat /etc/fstab
- 每隔5分钟执行一次
cron设置任务计划时注意事项:
- CPU和内存资源集中使用时的问题
# vim /etc/crontab
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root command1
- 取消一些不必要的输出:设置命令时可以重定向输出
- 时间的检验:设置时间时,周与日月不可并存
- 安全的检验:借由 /var/log/cron 的内容查看cron任务计划中是否有非法任务
- 环境变量:系统命令查找和cron任务命令位置由$PATH变量决定,设置cron任务时,使用命令的绝对路径
2.anacron:当cron周期性任务由于某种原因没有执行,anacron重新执行cron任务
- 语法:
anacron [options] [job]
-s : 依据时间记录文件去判断是否执行
-f : 强制执行
-n : 立刻执行为运行的任务,不需要延时
相关文件:
- /etc/anacrontab //该文件具体内容在Linux中查看
- /var/spool/anacron
执行流程:
- 1.由/etc/anacrontab 分析到 cron.daily 天数为1天
- 2.由/var/spool/anacron/cron.daily 取出最近一次执行anacron时间戳
- 3.由2步骤分析出的时间戳和任务进行比较,查看哪些cron任务超过1天没有执行
- 4.准备执行指令,根据/etc/crontab的设置,将延时执行
- 5.延时时间过后,执行指令