任务计划机制:定义脚本程序执行的任务不是当即的,而是安排安排在未来的某个时间运行。这就是机制任务计划机制。所任务计划必须是个未来某个时间点执行的任务

定义的方式
1、 在未来的某个时间点执行一次某个任务
2、 周期性的执行某任务
任务计划的实现
一次性的任务执行实现
可以实现的两个命令:at和batch
at:是指定时间点的
at的使用方法:at后跟时间点即可,按Enter,屏幕会输出at>提示符,在提示符下输入我们要执行的命令即可,形式如下
at> COMMAND(可以写多个命令)
at> COMMAND
...........
at>Ctrl +d(提交任务的命令)
输入完成后就可以在某个时间点去执行了;这里需要注意:这个时间必须是未来的某一个时间
at指定时间的几种方法:
绝对时间
HH:MM,DD:MM:YY,MM/DD/YY  例如:at 10:20(如果10:20时间已过,就是下一次的10:20这个时间点)
相对时间
at now+# 单位是minutes,hours,days,weeks 例如:at now+3minutes(从这一刻开始往后的3分钟即3分钟以后)
模糊时间
noon(正午即12:00),midnight(午夜即晚上00:00),teatime(下午4点)
命令的执行结果处理
将以邮件的形式发送给安排任务计划的用户
使用at执行两个作业示例 如图1所示
at now+5minutes(5分钟后执行以下任务)
at> ll /var
at> cat /etc/fstab
at> <EOF>(这里执行的是ctrl+d命令)
at now+10minutes
at> cat /etc/issue
at> <EOF>

图1 创建两个任务列表
查看任务计划
at -l = atq :显示自己的作业列表 如图2所示
图2 作业列表查看
数字2和3表示是第几个作业 中间的时间是:执行时间;字母"a"表示作业队列;root表示是谁的作业
at -d AT_JOB_ID = atrm AT_JOB_ID:删除某个作业  
例如:at -d 2:删除2号作业
batch:batch与at区别是batch不需要指定时间;batch特性是在系统空闲的时候执行作业(是自动选择的,所以不需要指定时间),
其他的使用格式都是与at相同的
at与batch权限使用的定义
在/etc/的目录下可以创建两个文件一个是at.deny文件一个是at.allow文件
at.allow文件
可以理解为允许用户使用的at与batch的白名单;如果at.allow不存在at.deny存在,只要是写在at.deny中的用户都不允许使用
/etc/at.deny文件
可以理解为允许用户使用的at与batch的黑名单如果at.allow存在at.deny不存在,只有写at.allow中的用户才具有使用权限
如果at.deny存在但是为空时,就是定义所有用户都具有使用权限
如果两个文件都存在以at.allow文件内容定义为主;如果都不存在,只有root用户具有使用权限
cron介绍
cron与at一样也是安排在某个任务在接下来的某个时间点运行的;cron可能在某个时间点都有可能执行;所以,cron本身要是一个不间断运行的服务
如果不小心关闭了系统略过了服务任务,那计划任务的执行到下一次才能执行,所以cron需要不间断的运行
anacron介绍
anacron是cron的补充,它的功能就是实现让cron因为各种原因在过去的时间点定义执行的任务但是没有执行的任务,让这个任务在系统恢复正常时再次正常的执行一次。anacron也是一种服务,一般都是随机运行的;anacron本身也必须要随时在线执行,即开机后就能启动。所以anacron主要是应用在经常性关机的设备上,例如笔记本
cron类别
系统cron任务:跟用户没有关系,是操作系统自身为了周期性执行某一个操作或任务而特意安排的。系统cron任务定义在
用户cron任务:都定义在/var/spool/cron/USERNAME(USERNAME意思是指与用户名同名的文件)
/etc/crontab与/var/spool/cron/USERNAME文件格式区别
/etc/crontab(文件中共有7个段,其中5个段指时间,一个段指用户,一个段指运行的任务)如:分钟 小时 天 月 周  用户 任务(每个段使用空格隔开)
/var/spool/cron/USERNAME文件中共有6个段,其中5个段指时间,一个段指运行任务)如:分钟 小时 天 月 周   任务  ------它不需要再指定用户
时间的有效取值
分钟: 0-59
小时: 1-23
天  : 1-31
月  : 1-12
周  : 0-7,(0和7都表示周日)
时间通配
*:对应取值的所有有效取值
5 * * * *  :(每小时第五分钟)
5 * * * 7  :(每周日的每小时的第五分钟)
15 12 1 1 *:(每年1月1号12点15分钟执行)
 ,:离散时间点取值
10,40 * * * 2,5 (每周二和周五的每小时的第10分与第40分都执行一次)
10,40 12 * * 2,5(每周二和周五的12点的第10分与第40分都执行一次)
-:连续时间点
15 12 * * 1-5(周一至周五的凌晨12点15执行)
/: 对应取值范围内每多久一次
*/5 * * * *  :每五分钟执行一次
01 */2 * * *  :每两小时执行一次(01是自己定义的,只是给个时间点,可以随意定义)
12 12 */2 * * :每两天执行一次(12可自己定义)
cron的环境变量
cron执行的所有命令都去PATH环境变量指定的路径下去找(但是cron是周期性执行的任务,cron
执行的那一刻,用户可能是没有登录的,如果没有登录则没有PATH变量
cron的PATH 基本上就是/bin:/sbin:/usr/bin:/usr/sbin这几个路径;当命令写在了其他位置,以用户的方式是可以执行,但是cron未必可以执行,所以应该使用绝对路径例如cat命令:/bin/cat
如果cron任务是在脚本中定义的时候应该直接先定义PATH变量
用户任务的管理(crontab)
crontab相关选项介绍
crontab  -l:列出当前用户的所有任务
crontab  -e:编辑(用于自己定义任务的
crontab  -r:移除当前用户的所有任务
crontab  -u:USERNAME:管理其他用户的cron任务
anacrontab介绍
anacrontab是crontab的补充,但是不能替代crontab
anacrontab的语法格式即/etc/anacrontab文件分析如图3所示

图3 /etc/anacrontab文件内容查看

配置文件中共4个段,前2个段是指时间的,第3个段是注释信息,第四个段是要执行的任务。
第一段中的“1”表示过去已经有一天没有执行了;“7”表示已经有7天没有执行了;“30”即已经有一个月没有执行了;第二个段的数字是在对应的没有执行的任务在开机执行的第65、70、75分钟执行一次。它的最小单位是天,即是监控的每天,每周,每月没有执行的任务记录
补充
无论是运行cron还是anacron,它们对应的服务都必须开启,只有对应的服务启动后,其功能才能才可以使用;anacrond服务默认是关闭的,需要手动启动
开启cron服务命令是   :service crond start
开启anacron服务命令是:service anacron start