【发布时间】:2011-08-04 14:45:31
【问题描述】:
我继承了需要维护和更新的庞大 crontab。我对它或 bash 脚本没有太多经验(我认为我已经掌握了基础知识),我想做得很好。 简短的请求:“重构”凌乱的 crontab 和一组 bash 脚本的任何指南
长请求:我遇到了很多问题,但有这么多人使用 cron 文件等,我觉得我一定错过了一些大型信息库、最佳实践和工具 - 或者这只是一种风格这种编程的区别? (我的偏见:如果我可以使用工具来更快、更稳定、更好地完成某件事,为什么还要手动执行?)。
到目前为止的问题示例:
-
由于外部事件,crontab 有几天没有运行。与其他人一起,我们手动浏览了列表,试图找出哪些没有运行,哪些需要重新运行,哪些脚本需要编辑和运行更早的日期等。 我找不到的:
- 在线上有很多(有点毫无意义的)“cron 生成器”。反面在哪里?我可以输入一个很长的 crontab、两个日期,并让它输出哪些进程应该在什么时候运行,或者总共运行多少次? 这似乎在我微薄的脚本能力范围内,所以它不应该已经存在吗? ;)
- 或者,如果我不得不再次这样做,是否有某种方法可以调用 bashscript,以便将 date() 的任何实例预设为更早的时间,而不是更改脚本中的每个日期调用? (例如,所有遗漏的报告和帐单)
事实证明,一个特定的报告已经两年没有运行了。只是再次请求它,瞧,它在 crontab 中! bash 脚本刚刚损坏了对相关文件的路径引用。 我找不到什么:bash 文件的某种路径检查器?就像一个网站链接检查器。是的,我最终会手动完成所有这些,但它至少会显示一些问题区域。
听起来有些时候,依赖进程之间的间隔要么太长要么太短,所以更新是在第一个运行之后发生的,或者第一个在第二个运行之前还没有完成运行叫。我已经看到了一些可能的选项(例如 anacron 按顺序运行),但是您会推荐什么?
还有大量从 crontab 生成的本质上毫无意义的电子邮件(脚本抛出错误但运行“正确”,大多是静默失败,或者只是打印非必要脚本的每一步)。我将手动浏览脚本并尝试让它们提供更有用的数据,或者“悄悄地成功”,但你知道 - 有什么指导方针吗?
如果我对问题的理解或布局有问题,那么我很抱歉,但是,嘿 - 你明白我的问题了!我需要从新手开始,知道该怎么做才能让这个正确,而不是进一步搞砸一个敏感的系统。谢谢!
【问题讨论】:
标签: bash cron crontab file-organization