对anacron的一点点理解

配置和概念

在查找crontab的时候看到了这个,二者看起来很像但了解了功能之后,发现annacron并不是一个循环定时执行的命令,只算一个定时执行的任务,并且支持的最小粒度是天。要做到循环我们可以想到用crontab和它结合来使用了。

anacron有一个自带的配置文件,如果你是centos,red hat一些常见的linux的话,系统安装时会自带这个功能。配置文件在 /etc/anacrontab 有兴趣的小伙伴可以打开来看(懒散的话就跟我一起看吧~)。

这里写图片描述

可以看到,在配置文件的末尾几行,有着跟crontab很相近格式的任务描述。 上面的注释也给出了每一个字段代表什么。一起来解读下:

  1. 第一列 period in days :天数时间间隔 。下面的1,7,就代表间隔1天,7天执行一次
  2. 第二列 delay in minutes:任务开始启动后的时间间隔(真实的间隔要到后面讲到另一个控制参数时一起说)
  3. 第三列 job indentifier :就是给你这个任务起个响亮的名字 这里的cron.daily,cron.weekly……就是了
  4. 第四列 command :具体执行的命令 这里是:nice run-part /etc/cron.daily …… 这里很多小伙伴可能看不懂这个命令,只会喊nice。 nice在linux中是降低优线程先权的一个命令。这里就简单说一下,知道是降低优先权就可以了。课后再去深究一下。

上面留了一个疑问就是,delay time的另一个控制参数。

在截图中我们可以看到 Random_delay这个参数,那么聪明的小伙伴就可以想到了,实际的时间的delay=第二列值+Random_delay (单位是分钟)

还看到一个配置参数是:start-hours-range=3-22
这表示任务的允许执行的时间区间,如何理解呢?举个栗子。

假设现在是下午1点,我设置了一个anacron任务,那么大概几分钟之后,这个任务要执行了。但是,这个任务有3-22这个限制,那么就要等到3点才可以对其进行执行,所以真实的执行时间是:3+delay 。

操作

下面说一下如何写一个自己的anacron命令

首先要有一个配置文件。系统的/etc/anacrontab 这个文件还是不要去触碰它了,我们自己来写一个新的配置文件。在一个你喜欢的文件夹下面新建一个文件,假设叫:anacrontest  。
    vim anacrontest
参照系统的配置文件复制下来,写一些自己的命令。 就是将它的nice xxxx这个命令删除掉,自己写一个命令。
最后执行:
    anacron -t 你的配置文件  -S /var/anacrontest 
    解释一下参数: -t 后面指定配置文件,因为这是一个新的配置文件,我们需要告诉它配置文件的位置   -S(英文大写)  表示选取一个已经存在的文件夹来存放最后一次执行任务的时间戳。
    默认时间戳存储的位置是在/var/spool/anacron 文件夹下面,大家可以打开看一下这个文件夹,里面应该是有cron.daily等三个文件。对应着就是系统任务的三个任务名。里面打开看:

这里写图片描述

就是一个时间戳。记录了上次任务的执行时间是什么时候。(图片是cron.daily的)

补充

之前看到网上有说crontab在关机时如果错过了下次运行任务的时间,那么crontab任务会失效。这里我自己做了一个实验。使用crontab设定一个任务,每两分钟新建一个文件,两分钟之后任务生效,文件生成。将机器关闭。间隔大约五分钟,按照网上的说法,此时crontab任务失效,因为在下一次生成文件时是关机状态。我再次开机,两分钟后,文件继续生成,说明说法并不正确,可以确定关机后,即使错过了crontab任务的执行时间,任务仍然不会失效。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值