Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189527
  • 博文数量: 77
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 45
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-25 10:50
文章分类

全部博文(77)

文章存档

2018年(1)

2017年(3)

2016年(4)

2015年(4)

2014年(16)

2013年(7)

2012年(20)

2011年(22)

分类: 系统运维

2017-12-27 15:43:25

  • anacron 用于以天为单位的频率运行命令。它的工作与 cron 稍有不同,它假设机器不会一直开机。

    cron 也适合在那些不会 24X7 运行如笔记本以及桌面电脑的机器上运行每日、每周以及每月的计划任务(LCTT 译注:不适合按小时、分钟执行任务)。

  • 假设你有一个计划任务(比如备份脚本)要使用 cron 在每天半夜运行,也许你以及睡着,那时你的桌面/笔记本电脑已经关机。你的备份脚本就不会被运行。

    然而,如果你使用 anacron,你可以确保在你下次开启桌面/笔记本电脑的时候,备份脚本会被执行。

    • anacron 任务被列在 /etc/anacrontab 中,任务可以使用下面的格式(anacron 文件中的注释必须以 # 号开始)安排。

      period   delay   job-identifier   command


    • 从上面的格式中:

      period - 这是任务的频率,以天来指定,或者是@daily 、@weekly、@monthly 代表每天、每周、每月一次。你也可以使用数字:1 - 每天、7 - 每周、30- 每月,或者N - 几天。

      delay - 这是在执行一个任务前等待的分钟数。

      job-id - 这是写在日志文件中任务的独特名字。

      command - 这是要执行的命令或 shell 脚本。
      要浏览实例文件,输入:ls -l /var/spool/anacron/
      total 12
      -rw-------. 1 root root 9 Dec 27 03:46 cron.daily
      -rw-------. 1 root root 9 Dec 26 03:18 cron.monthly
      -rw-------. 1 root root 9 Dec 22 03:06 cron.weekly
      这是实际发生的:
      anacron 会检查任务是否已经在 period 字段指定的时间被被执行了。如果没有,则
      在等待 delay 字段中指定的分钟数后,执行 command字段中指定的命令。一旦任务被执行了,它会使用 job-id (时间戳文件名)字段中指定的名称将日期记录在 /var/spool/anacron 目录中的时间戳文件中。

      现在让我们看一个例子。这个会每天运行 /home/aaronkilik/bin/backup.sh 脚本:
      @daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh
      当机器在 backup.sh 期望被运行时是关机的,anacron 会在机器开机十分钟之后运行它,而不用再等待 7 天。

      这里有两个你应该理解的 anacrontab 文件的重要变量:

      START_HOURS_RANGE - 这个设置任务开始运行的时间范围(也就是任务只在这几个小时内运行)。

      RANDOM_DELAY - 这定义添加到用户定义的任务延迟的最大随机延迟(默认为 45)。

      这是你的 anacrontab 文件可能看上去的样子。

      下面是cron 和anacron 的比较:








阅读(826) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~