计算cron作业执行的频率

时间:2011-11-14 22:29:07

标签: ruby linux scripting rubygems

我正在学习ruby,我正在试图弄清楚如何创建一个简单的脚本来执行以下操作:

在文本文件(crontab -l的输出)中列出cron作业列表,并计算它们在一年内执行的频率。

所以,假设我有以下cron工作:

21 23 * * * / some / cron / job / here

我知道这个cron作业每天晚上11:21执行。所以,我希望脚本告诉我一年中这个cron作业会运行多少次。我知道答案是365,但我不知道如何在ruby中做到这一点以获得相同的结果。

此外,它需要能够处理更复杂的 - 例如:

30 * / 2 * * * / another / cron / job / here

这个每天每隔一小时运行30分钟,所以我需要脚本能够告诉我一年内运行多少次。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是一个肮脏的答案,因为我只是假设你的问题很好地解释了整个事情,但你可能会这样做:

def rdcron(line)
  (minutes, hours) = (line.scan(/^\S+ \S+/))[0] # complete the regex with the format of the line
  if hours =~ /(.*)\/(\d+)/
    num=$1; dem=$2;
    num=1 if num == "\*"
    hours = Rational(num,dem).to_f
  end
  #...cron format parsing blocks like the above continue here
  minutes * hours # * ...
end