任务计划:调度性的任务
分为:
一次性任务计划:at、batch
周期性任务计划:cron、anacron
一次性任务计划:
一、at命令
1、at:设置系统在某一个时间点执行的任务,执行结果以邮件的方式发送给任务发起者
依赖atd服务,所以需要:
# systemctl start atd
# systemctl enable atd
# systemctl status atd
2、语法:
# at data_time
at>at_command1 //输入需要执行的命令
at>at_command2
at>ctrl+d 保存退出
data_time:时间日期写法
绝对时间:
HH:MM:具体时间点
DD.MM.YY:天.月.年
YY-MM-DD:年-月-日
MM/DD/YY:月/日/年
HH:MM YY-MM-DD:
相对时间:
at now+3minutes:从任务计划创建开始计时,3分钟以后执行
3、与at命令相关的文件:
Linux中设置at任务后,会在/var/spool/at/目录生成at任务计划的文件,按照文件名的排序顺序执行
权限:
/etc/at.allow:at任务计划的白名单,仅允许此文件中的用户执行at
/etc/at.deny:at任务计划的黑名单,仅拒绝次文件中的用户执行at
系统先查找/etc/at.allow,再去查找/etc/at.deny,如果两个文件都没有,可以执行
4、at命令:设置at任务计划
-l:查看系统中at任务列表,相当于atq
-r:删除系统中的at任务列表,相当于atrm
-d:删除系统中的at任务列表,相当于atrm
-c:列出后续at任务的具体指令内容
二、batch
1、batch:用法和at相同,不过batch任务计划是在CPU空闲时执行(当CPU的平均负载小于0.8时,uptime:查看CPU的平均负载)
依赖batchd服务,所以需要:
# systemctl start batchd
# systemctl enable batchd
# systemctl status batchd
2、语法:
# batch data_time
batch>batch_command1
batch>batch_command2
batch>ctrl+d 保存退出
data_time:时间日期写法:
绝对时间:
HH:MM:具体时间点
DD.MM.YY:天.月.年
YY-MM-DD:年-月-日
MM/DD/YY:月/日/年
HH:MM YY-MM-DD:
相对时间:
at now+3minutes:从任务计划创建开始计时,3分钟以后执行
周期性任务计划:
系统周期性任务:
日志轮换:logrotate
登录文件分析:logwatch任务
创建locate数据库:updatedb
创建man帮助信息数据库:CentOS6:makewathis CentOS7:mandb
RPM软件登录文件的创建
与网络相关的分析行为:
用户周期性任务:
cron:设置周期任务计划
anacron:当cron周期性任务由于某种原因没有执行,anacron重新执行cron任务
一、cron
1、cron:
依赖crond服务,所以需要:
# systemctl startcrond
# systemctl enablecrond
# systemctl statuscrond
2、相关文件:
权限控制文件:
/etc/cron.allow和/etc/cron.deny
/etc/cron.allow:白名单
/etc/cron.deny:黑名单,默认情况下系统只保留/etc/cron.deny
cron相关的配置文件:
/etc/crontab:cron配置文件
/etc/cron.d/:cron辅助配置文件目录
/var/spool/cron/:cron任务计划的配置文件目录,用户设置完cron任务后,会生成以用户名名称的cron文件
/etc/crontab文件解析:
SHELL=/bin/bash:cron任务计划执行使用的shell程序
PATH=/sbin:/bin:/usr/sbin:/usr/bin:cron任务计划命令搜索地址
MAILTO=root:cron任务计划执行结果发送给哪个用户
/etc/daily/ /etc/hourly/ /etc/monthly/ /etc/weekly/,这些目录下存放了固定的周期性任务
cron.hourly:cron工具去执行
cron.daily,cron.weekly cron.monthly是由anacron工具去执行
3、操作:
crontab:设置/查看/删除等cron任务计划,执行结果以邮件方式发送给任务发起者
-e:会通过文本格式建立,在文本中编辑cron任务内容,语法见下文
-u:为指定用户设置cron任务计划(只有root用户能够使用)
-l:查看cron任务列表
-r:删除所有的cron列表
设置任务语法:
系统设置:
分 时 日 月 周 用户 命令
用户设置:
分 时 日 月 周 命令
时间取值范围:
分钟:0-59
小时:0-23
日期:1-31
月份:1-12或jan,feb,mar,apr ...
周:0-7或sun,mon,tue,wed,thu,fri,sat,其中0和7都代表周日
时间的特殊写法:
通配:*代表任意时间 10 17 * * * cat /etc/fstab
离散时间段:,(逗号) 5,15,30,45,56 17 * * * cat /etc/fstab
连续时间段:-(中横线) 00 23 * * 1-5 cat /etc/fstab
间隔时间段:*/n */5 * * * * cat /etc/fstab 00 10 */5 * * cat /etc/fstab(分不能通配)
4、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任务时,使用命令的绝对路径
二、anacron
1、anacron:当cron周期性任务由于某种原因(如关机)没有执行,anacron重新执行cron任务
2、语法:
anacron [options] [job]
-s:依据时间记录文件去判断是否执行
-f:强制执行
-n:立刻运行未执行的任务,不需要延时
3、anacron执行流程:
1:由/etc/anacrontab分析到cron.daily天数为1天
2:由/var/spool/anacron/cron.daily取出最近一次执行anacron时间戳
3:由2步骤分析出的时间戳和cron任务进行比较,查看哪些cron任务超过1天时间没有执行
4:准备执行指令,根据/etc/anacrontab的设置,将延时执行
5:延时时间过后,执行指令