Aza*_*azo 13 bash cron file-organization crontab
我继承了一个庞大的crontab,我需要维护和更新.我没有太多的经验或bash脚本(我认为我对基础知识有一个很好的掌握),我想做得很好.简短请求:任何"重构"凌乱的crontab和一组bash脚本的指南
长期请求:我遇到了很多问题,但很多人使用cron文件等我觉得我必须缺少一些大型信息库,最佳实践和工具 - 或者这只是一个风格上的差异那种编程?(我的偏见:为什么我可以使用工具更快,更一致,更好地手动执行某些操作?).
迄今为止的问题示例:
由于外部事件,crontab没有运行几天.与其他人一起,我们手动浏览列表,试图找出未运行的内容,我们需要重新运行的内容,以及我们需要编辑和运行早期日期等的脚本.我找不到:
事实证明,一份特定的报告已经运行了两年.它只是再次被要求,而且,它在crontab中!bash脚本刚刚破坏了对相关文件的路径引用.我找不到:bash文件的某种路径检查器?像网站链接检查器.是的,我最终将手动完成这些操作,但它至少会显示一些问题区域.
听起来有些时候,依赖进程之间的间隔太长或太短,因此在第一次运行之后发生了更新,或者在第二次调用之前第一次没有完成运行.我已经看到了一些可能的选项(例如anacron按顺序运行),但你会推荐什么?
还有大量基本无意义的电子邮件从crontab生成(脚本抛出错误但运行'正确',大多数情况下无声地失败,或只是打印非必要脚本的永久性).我会手动浏览脚本并尝试让它们提供更多有用的数据,或者"安静地成功",但是你知道 - 任何指导方针?
如果我对这个问题的理解或布局感到困惑,那么我道歉,但是嘿 - 你看到了我的问题!我需要去从新手,知道怎样做才能得到这个正确的,并没有进一步搞砸了一个敏感的系统.谢谢!
不是一个完整的答案,而是更多有用的资源:http: //blog.endpoint.com/2008/12/best-practices-for-cron.html
我正在慢慢地经历这一点,并试图实现每一点.在我的帖子之后,我没有想过谷歌的最佳实践.:P
对于版本控制,我将在此期间使用RCS,因为我在逐个文件的基础上编辑脚本,但我被建议设置Git(如果我在Windows系统上,则为Mercurial) ).
这实际上听起来很棒:http: //everythingsysadmin.com/2010/09/xed-202-released.html "xed是一个锁定文件的perl脚本,在文件上运行$ EDITOR,然后解锁它."...并且如果它还没有,则将其放入RCS中.完全无脑版本控制.如果我了解bash,我想创建一个编辑快捷方式,自动提交到我使用的任何版本控制系统.
我从系统管理员收到的其他提示,日期:而不是使用say,date或--date ="last monday",使用固定日期并在每次运行时添加一天/周等(如果不超过显然是当前的一天),因为如果脚本没有运行,我可以反复重新运行脚本,直到它赶上.啊! (而且,这听起来可能很明显,但是我最终会编辑的大量报告,并没有突出显示报告运行的日期.将修复.)
并且放心,我应该尝试尽可能安静地获取cron电子邮件,以便我实际注意到电子邮件是否有错误.有更好的cron错误报告包装,我还没有调查过,链接在这里:http://habilis.net/cronic/
艰巨的任务摆在你面前,祝你好运。:)
我建议找到每天运行的所有任务并将它们推送到/etc/cron.daily/
. 每周/etc/cron.weekly
、每小时和每月也是如此。
anacron(8)
如果机器并不总是在线,您可能想要研究如何使用它来安排作业,但您仍然需要对作业运行时间进行一定程度的控制。几年来,它一直是多个发行版的默认 cron-helper-tool,因此希望它足够稳定,可以依赖于您自己的任务;但我很容易想象它可能无法完全满足您的需求。
在 Ubuntu 上至少可以使用两个软件包来将日期伪造为脚本:datefudge
和faketime
。我对两者都没有经验,但听起来他们应该能够提供帮助。我希望你将来不再需要它。:)
抱歉,我知道 bash 脚本没有路径检查器。这似乎不太可能,因为简单的脚本很简单并且易于肉眼检查:)并且复杂的脚本无论如何都会在运行时生成它们的路径名。也许您可以保留每个脚本使用的路径名数据库,并编写一个新脚本来定期验证该数据库。
您可以通过设置禁用 cron 电子邮件MAILTO=""
。我不确定我喜欢这个。也许设置MAILTO
为仅记录帐户将有助于缓解洪流。另一种选择是真正熟悉您的procmail(1)
规则,这样您就可以将它们完全放入另一个邮箱中。
善于mutt
color
控制score
可以帮助你在谷壳中发现小麦。(color index red black ERROR
或类似的命令可能会帮助您更快地发现问题。)
归档时间: |
|
查看次数: |
6514 次 |
最近记录: |