您的位置:首页 > 运维架构 > Linux

Linux的计划任务

2017-03-14 08:03 267 查看

Linux的计划任务

1.at服务是一个一次行执行的任务的工具1.检查at 是否安装  chkconfig  --list | grep atd/etc/at.allow,白名单/etc/at.deny,黑名单。
at +时间,会延期执行。
atq,会显示准备执行的命令列表。
at -c 命令号,会显示该命令的具体执行过程。
atrm [工作号]       #删除指定的at任务
2.crontab  是一个用于设置周期性被执行的任务的工具crontab 周期性执行的任务列表cront job被周期性执行的任务1.安装和检查crontab 是否安装  crontab   -l   检查crond 服务是否开启   service   crond   status   // 大部分服务都是*d        安装cron  yum   install vixie-cron                             yum   install  crontabs/cron/at.allow,白名单/cron/at.deny,黑名单。2.crontab  -e  编辑一个crontab 任务   */  *  *  * * date > /tmp/log.txt                            //没分钟打印一个日期到/tmp/log.txt   tail  -f   /tmp/log.txt    动态刷新文件显示按crrl  + c 停止3.crontab 的组成1>crond 系统服务          -----------》每分钟都会从配置文件刷新定时任务2>配置文件      ------------------》文件方式设置定时任务(要加用户身份)3>crontab  调整定时任务分别表示 分钟,小时,日,月,星期(0-6)星期天是0或者7,4.简单设置:每晚21.30 重启apache服务30 21 * * *  service  httpd  restart每月的 1.10,12 的4.45重启apache45 4 1,10,12 * service  httpd  restart每月的1到10号4.45重启apache45 4 1-10 **service  httpd  restart没两分钟重启apache*/2 * * * * service  httpd  restart晚上11-7 重启apache0 23-7/1 * * * service  httpd  restart每天18-23 每隔30分钟重启一次1-59/30  18-23 * * *   service  httpd  restart
*表示任何时候都匹配
可以用A,B,C,表示或A或B或C时执行mingl
可以用A-B表示A到B之间时执行命令
可以用*/A 表示每A分钟(小时等)执行一次命令
5.crontab使用6.crontab的配置文件1》全局配置文件:/etc/crontab       可以在/etc/crontab 中设置计划任务:直接输入即可:(要加用户身份:命令尽量写绝对路径)2》var/spool/cron   /root和crontab  -l  中显示的相同。即crontab  -e  修改的是var/spool/cron/root
1)手工执行定时任务
2)系统定时任务
-  第一种:把需要定时执行的脚本复制到/etc/cron.{daily,weekly,monthly}目录中的任意一个
-  第二种:修改/etc/crontab配置文件
      7.crontab 的日志var/log/cron       8.进入/var/spool/mail可以看到cron以邮件的形式发送给root9.常见的的错误:1》命令行双引号使用%没有加\四月的第一个星期天早晨1.59执行a.sh错误的: 59 1 1-7 4 0 /root/a.sh  
第三和五域之间 执行的是 “或”操作
原来是想这 四月的第一个星期日早晨1时59分运行a.sh
59 1 1-7 4 0 /root/a.sh
但是实际上 1-7 与 0 是或的 关系,实际上会在4月的1-7日 每天都会执行,并且当星期数为星期七时,也会执行,所以执行次数多达11次。
所以应该把星期的判断 放在执行的脚本上。
正确:
59 1 1-7 4 * test `date +\%w` -eq 0 && /root/a.sh
用test判断是否为星期天2》分钟设置错误    没两个小时执行一次    错误: * */2 * * * date         //每分钟都会执行    正确:  0  */2  * * * * date9.每半分钟执行一次配合sleep */1 * * * * sleep 30s ;date10.anacron:
anacron用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行。
检测周期:一天、7天、一个月。上次执行cron的时间与当前时间比较,若两个时间的差值超过了anacron的指定时间,证明有cron任务被执行。
CentOS  6.x的区别
在老的CentOS版本中,/etc/cron.{daily,weekly,monthly},这些目录即会被cron调用,也会被anacron调用,容易重复执行
在CentOS 6.x中则只会被anacron调用,避免重复执行
在CentOS 6.x中,anacron不再是服务,而是系统命令
anacron配置文件
vi /etc/anacrontab
RANDOM_DELAY=45 #最大随机延迟
START_HOURS_RANGE=3-22 #anacron执行时间范围
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weeky nice run-parts /etc/weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
上面 1 7 @monthly 表示时间间隔1天 5天 一个月以上
5 25 是强制延迟时间 也就是后面文件强制推迟延迟执行这么多分钟
具体以cron.daily工作过程举例:
首先读取/var/spool/anacron/cron.daily中的上一次anacron执行时间和当前时间比较,
如果两个时间的差值超过1天,就执行cron.daily工作,执行这个工作只能在03:00~22:00之间
执行工作时强制延迟时间为5分钟,再随机延迟0~45分钟的时间
使用nice命令指定默认优先级,使用run-parts脚本执行/etc/cron.daily目录中的所有可执行文件

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 命令 crontab cron