十四、计划任务
一、 前情提要
提出设想:
问:愿意半夜熬夜加班吗?
答:不愿意
接着问 如果让你在非工作时间完成一件事情(你的份内的事情)该咋么办
答:要么定闹钟.要么等死
在 Linux 中有一个非常好的解决该问题的服务这个就是----------------------------计划任务
二、 什么叫计划任务
计划任务就是任务在约定的时间执行经计划好的工作,这个是字面意思.在 Linux 中 我们经常用到 at 和 crond
服务来完成这个任务
三、 两种计划任务
计划任务分两种:单次性计划任务(at)和周期性计划任务.
cron 服务可以根据配置文件的约定当中的时间来执行特定的任务.
比如说,我们可以在配置文件中约定每天早上 4 点对我们的服务器进行一个某个服务的重启
at:单次性计划任务
在某一个特定的时间去执行某一个特定的事情.且执行过一次之后该任务失效。
四、 单次性计划中用的参数
at 【-f file 把 at 的工作内容存储成一个文件,用-f 来指定这个文件】
【-m 即使没有产生任何的信息,也要发邮件给 at 任务的拥有者】
【-l 与 atq 命令相同】
【-d 与 atrm 命令相同】
【TIME 参数后边指定的时间】
五、 at 的使用
at+时间可以创建单次性计划任务,进入的是一个交互模式
[root@wushengmin ~]# at now+20min
at> ls > 123
at>
job 4 at Tue Jan 16 21:30:00 2018
查看 at 任务的等待列表 atq=at -l
查看 at 计划任务内容 at -c JobID
删除 at 计划任务列表当中的任务 at -d JobID = atrm JobID
六、 at 的黑白名单
/etc/at.allow(白名单)
/etc/at.deny(黑名单)
当/etc/at.allow 存在的时候 只要不在该文件中的用户就无法使用 at,此时 deny 是不生效的
只有/etc/at. deny 存在的时候该文件中有的用户不能使用 at,其他用户随意
allow 会覆盖 deny
/var/spool/at/存放 at 的服务队列,每有一个新的任务队列出现就会生成一个相应的可执行文件
七、 周期性计划任务(cron)
在 Linux 系统中,计划任务一般是由 cron 来承担的
我们可以把 crond 设置为开机自启动 。cron 启动之后他会去读取所有的配置文件(全局配置文件
/etc/crontab 以及每个用户的计划任务文件),然后 cron 会根据文件命令、执行时间等因素按时去调度工作任务
在使用前确定一点,我的系统有没有这个服务,如果有,该程序是否自启动
crontabs 软件包用来安装、卸载、或列举,用来驱动 cron 守护进程的
cron 数据库当中你的参数不应该超过一行,每一行为一条独立的数据,如果一条数据超过了一行,可能会发
生一些错误,如果我要执行的东西太多了 ,推荐写成脚本.
八、 cron 全局配置
/etc/crontab
在这个数据库当中填写不要忘记了时间参数和执行中有一个 username 的参数
九、 cron 的问答
注意 :在同一个时间执行多个计划任务的时候 我们该怎么办?
答:无所谓没有什么优先级一说。
十、 cron 配置文件的说明
看用户自身的 cron 的命令:
crontab -l
除了 root 等管理员,其他用户只能为自己创建计划任务。
十一、 cron 黑白名单
/etc/cron.allow 白 /etc/cron.deny 黑
当/etc/cron.allow 存在的时候 只要不在该文件中的用户就无法使用 crontab,此时 deny 是不生效的
只有/etc/cron.deny 存在的时候该文件中有的用户不能使用 crontab,其他用户随意
只要服务拒绝使用 那么就算之前拥有一个周期性的计划 该任务也会失败