一.at 和 cron
1. 解决的问题:如果你想让系统定期完成一些任务或者是完成一些突发的任务,就用到了at(突发任务)和cron(定期任务)
2. 前面使用service 启动服务的时候,实际上执行/etc/init.d/下的服务脚本(可以研究一下系统的脚本)
3. at服务
(1)设定服务开机启动:chkconfig --level 35 atd on
列出服务的列表:chkconfig --list
列出某一个服务: chkconfig --list | grep 服务名字
(2)at服务有两个档案:/etc/at.follow 和/etc/at.deny
首先寻找/etc/at.follow这档案,在这个文件中记录的用户都是允许使用at的用户,而没有记录的用户则不允许使用at
如果没有/etc/at.follow这个档案,就会寻找/etc/at.deny这个文件,文件中记录的都是不允许使用at的用户
一般系统默认有一个档案/etc/at.deny,如果没有这两个档案,则是只有root可以使用at这个服务
(3)at的命令:at [选项] [时间格式]
选项:
-l (atq):列出目前该系统上所有使用者的at排程
-d(atrm):可以取消一个在at排程的工作
-v :使用明显的时间格式列出at排程的详细列表
-c :列出后面接的该项工作的实际命令内容
时间格式: HH:MM
HH:MM YYYY-MM-DD
HH:MM
now +5minutes
atq查询当下有多少计划和任务
atrm:对任务删除
4.cron服务:
(1)cron也同at一样有两个文档:/etc/cron.allow和/etc/cron.deny,系统也是默认有一个/etc/cron.deny
(2)cron服务的命令:crontab
crontab -e 编辑crontab的工作内容(/usr/bin/crontab)
crontab -l 查阅crontab的工作内容
crontab -r 移除crontab的工作内容
进入编辑界面之后:添加的执行的内容格式
[分钟] [小时] [日期] [月份] [周] command(需要执行的命令)
时间部分的特殊字符:
(3)crontab不执行的原因:
cron服务未启动; 解决方法:/etc/init.d/cron restart
脚本没有x执行权限; 解决方法:bash 脚本 或者添加执行x权限
路径问题;cron中需要提供绝对路径
(4)配置文件/etc/crontab(系统的例行性计划任务,而不是使用者的例行执行任务)
cron的最低侦测限制是分钟,所以cron会每分钟去读取一次/etc/crontab与/var/spool/cron的数据内容
时间设定之后的一栏是运行后面的那串命令的身份;run-parts是一个bash script,如果你想让系统每小时主动帮你运行某 个命令,将该命令写成script,并将该文件放置到/etc/cron.hourly/目录下
/etc/crontab下达命令的方式有两种:直接下达命令;以目录来规划
直接下达命令:01 * * * * root command
目录来规划: */5 * * * * root run-parts 目录(每隔5分钟运行的可运行挡都写在该目录下)
修改完之后需要重启一下crond这个服务:/etc/init.d/crond start
(5)当大量使用定时任务时,可能发生系统资源分配不均的问题,如果每一个流程都在同一个时间段启动,系统会相当的繁忙,所以就需要分时配置。
使用重定向,取消不需要的输出项目,可以输出到/dev/null
(6)查看/var/log/cron的内容来查看是否有非正常配置
周与月日不可以同时使用。