【问题标题】:cron job two parameters - start time and end time should cover entire daycron 作业两个参数 - 开始时间和结束时间应该涵盖一整天
【发布时间】:2014-12-17 04:28:03
【问题描述】:

我编写了一个用于数据提取的 shell 脚本,它接受两个参数 - 开始时间和结束时间,格式为 YYDDMMHHSSSS。 shell 脚本将依次运行 sql 查询并在这两个日期参数之间获取数据。

我的意图是将 shell 脚本部署为一个 cron 作业,该作业应该每天至少运行一次(最好每 6 小时运行一次)。第二次运行时,它应该使用最后一个结束时间作为开始时间,并使用新的结束时间作为(开始时间 + 6 小时)。所以所有数据总是被提取一次。另一项工作将在每天午夜 12 点开始,它将获取 shell 脚本为当天存放的数据。

我之前从未设置过 cron 作业,但从我所读到的内容看来它是可行的,但我不确定上述事情是否可以完成?

【问题讨论】:

标签: linux shell cron


【解决方案1】:

Cron 在特定时间和/或日期执行作业,并使用在将作业放入 cron 作业表时定义的脚本的所有参数。该脚本需要处理所有其他要求。如果您的要求是基于当前时间和上次执行脚本的时间,那么脚本每次运行时都需要保存执行时间,并从保存的信息中获取上次调用它的时间。

在这种特殊情况下,由于您正在访问一个数据库,我建议您使用该数据库来保存上一个脚本执行的时间。

【讨论】:

  • 好建议。我后来想到的另一件事是,参数是否硬编码为 6 小时间隔并不重要,对吧? Shell 脚本将始终仅获取那些特定时间间隔的数据。因此,即使前 6 个小时的 shell 脚本完成得很晚,它也只会处理这 6 个小时的数据。下次它只会在接下来的六个小时内处理它。我只是回答了我自己的问题吗? :)
  • 您是正确的,shell 脚本只会获取指定时间范围内的数据。需要注意的一件事是,由于系统负载和 DST 时钟变化等外部影响,脚本执行之间的确切时间可能会发生变化。
猜你喜欢
  • 2013-06-01
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 2011-05-25
相关资源
最近更新 更多