linux定时任务总结

一、at一次性定时任务

     1、确定at安装

  • chkconfig --list | grep atd(at服务是否安装)
  • service atd restart(at服务是否启动)

     2、at的访问控制

  • 如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow 文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
  • 如果系统中没有/etc/at.allow 文件,只有/etc/at.deny文件,那么写入/etc/at.deny(黑名单)文件中的用户不能使用at命令。对root不起作用
  • 如果系统中这两个文件都不存在,那么只有root用户可以使用at命令

     3、at的命令

  • at [选项] 时间
  • 选项:-m:当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户。-c 工作号:显示该at工作的实际内容
  • 时间:
    • -HH:MM;例如:02:30
    • -HH:MM YYYY-MM-DD;例如:02:30 2013-07-25
    • -HH:MM [am|pm] [month] [date];例如:02:30 july 25
    • -HH:MM[am|pm] + [minutes|hours|days|weeks];例如at now + 5 minutes
  • atq 查看当前的at任务
  • atrm [工作号] 删除at任务

二、crontab循环定时任务

     1、crond服务管理与访问控制

  • service crond restart
  • chkconfig crond on

     2、访问控制

  • 当系统中有/etc/cron.allow文件时,只有写入此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高
  • 当系统只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令

     3、用户的crontab设置(绑定了用户身份)

  • crontab [选项]
  • 选项:
    • -e:编辑crontab定时任务
      • 格式:***** 执行的任务(每小时每分钟)
        • 第五个:一周中的星期几(0-7,0和7都是周日)
        • 第四个:一年中的第几个月(1-12)
        • 第三个:一个月中的第几天(1-31)
        • 第二个:一天中的第几小时(0-23)
        • 第一个:一小时中的第几分钟(0-59)
          • *:任意时间。具体看下面
          • ,:代表不连续的时间。比如“0 8,12,16 * * * 命令”代表每天8.0分,12.0分,16.0分都执行一次
          • -:代表连续的时间范围。比如“0 5 * * 1-6 命令”代表周一到周六凌晨5.0分执行
          • */n:代表没隔多久执行一次。比如“*/10 * * * * 命令”代表每个10分钟执行一次
          •  
    • -l:查询crontab任务
    • -r:删除当前用户所有的crontab任务(清一个直接进crontab -e 删除那一行)

     4、注意事项:

  • 六个选项不能为空,必须填写。如果不确定使用“*”代替任意时间
  • crontab定时任务,最小有效时间是分钟,最大时间范围是月
  • 日期和星期都是以天为单位,最好不要在一条定时任务中
  • 定时任务中,不管直接写命令还是在脚本中写命令,最好都是用绝对路径(定时任务有自带的环境变量,跟系统的有差别)

三、系统crontab的设置(通过配置文件)

     “crontab -e”是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务。可是有些定时任务需要系统执行,这时我们就需要编辑/etc/crontab这个设置文件了。即让root用户自定义将定时任务绑定到指定用户身上

vim /etc/crontab  进去有

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

#run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

   

     1,centos5中的配置文件

     只用将写好的脚本放入上方四个文件(cron.hourly、cron.daily、cron.weekly、cron.monthly)即可,系统会自动执行。centos6中也保留了上方四个文件只是不是/etc/crontab和anacron混合管理,而是直接交给anacron管理,避免了重复执行 。anacron不再是服务,而是系统命令,可以直接执行。

     2,执行系统的定时任务方法

  • 第一种crontab -e
  • 第二种是把需要定时执行的脚本复制到/etc/cron.{daily,weekly,monthly}目录中的任意一个
  • 第三种是修改/etc/crontab配置文件(其实是和crontab -e一样的)

四、anacron配置

     ancron 是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行(anacron只会检测上面那四个文件的定时任务,不会检测其他)

     1、检测周期

  • anacron会使用一天,七天,一个月作为检测周期
  • 在系统的/var/spool/anacron/目录中存在cron.{daily,weekly,monthly}临时文件,用于记录上次执行cron的时间(精确到天)
  • 和当前时间作比较,如果两个时间的差值超过了anacron的指定时间差值,证明有cron任务被漏执行

     2、anacron配置文件

  • vim /etc/anacrontab
    • RANDOM_DELAY=45   #最大随机延迟
  • START_HOURS_RANGE=3-22   #anacron的执行时间范围是3:00-22:00
  • 1 5 cron.daily nice run-parts /etc/cron/daily #超过天数 强制延迟(分) 工作名称 实际执行的命令

     3、cron。daily工作来说明执行过程

  • 首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间
  • 和当前时间比较,如果两个时间差值超过一天,就执行cron.daily工作。。。。。
  • 执行这个工作只能在03:00-22:00之间
  • 执行工作时强制延迟时间为5分钟,在随机延迟0-45分钟时间
  • 使用nice命令指定默认优先级,使用run-parts脚本执行/etc/cron.daily目录中的所有可执行文件

     4、缺陷

     不知道啥时候执行,不可控。但是优胜于劣..

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值