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