如何在 crontab 更改时获得警报?
Posted
技术标签:
【中文标题】如何在 crontab 更改时获得警报?【英文标题】:How to get alert when crontab changes? 【发布时间】:2012-11-21 11:49:51 【问题描述】:我有大约十二台服务器,每台服务器都有 crontab,其中包含 20-50 个 crontab 条目。我最常见的一个进程失败原因是有人在修复或修补期间注释掉了 cron 中的作业,然后忘记取消注释这些作业。
我想做两件事来解决这个问题:
-
开始使用我们的计划抑制过程,该过程允许用户在不实际接触 crontab 的情况下抑制计划。没什么神奇的 - 只需触摸专用于该过程的目录中的文件。该进程会在启动时检查该目录。
实施一个进程,如果 crontab 与其备份或 svn 中的当前版本不匹配,将发出警报。
谁能推荐#2 的现有解决方案(在 crontab 更改时发出警报)?
【问题讨论】:
【参考方案1】:在这种情况下,我建议比较您想要拥有的文件和实际文件的哈希值。
只需编写一个发送电子邮件通知或创建通知文件或任何您想要的小 bashscript 并让此脚本每 x 秒/分钟/小时自动运行一次。
一个可能的脚本可能是
if [[ $(md5sum path/to/crontab.backup | cut -d' ' -f1) == $(md5sum /etc/crontab | cut -d' ' -f1) ]]
then
# send your notification
fi
这是一个非常简单的解决方案,用于检查自上次备份以来文件是否发生更改。
【讨论】:
谢谢,我考虑过这个实现。我假设它应该运行一个差异,而不是 md5sum;如果 crontab 被删除,从 root 运行以避免丢失检查;并且应该能够从 svn/cvs/git/etc 中提取。但我更喜欢真正可靠的工具,以防我在这里忽略了任何其他有用的功能。 也许您可以使用自内核 2.6.13 以来可用的 inotify 系统。见infoq.com/articles/inotify-linux-file-system-event-monitoring 我没有考虑过 inotify - 这是一个有趣的想法。但在这种情况下,我没有性能或准确性问题 - crontab 的差异不会成为挑战。我认为与 svn 中的条目进行比较可能是我最好的选择。以上是关于如何在 crontab 更改时获得警报?的主要内容,如果未能解决你的问题,请参考以下文章