有人能告诉我如何刷新/清理/归零或者更好地旋转 cronevents 的内容吗?
我需要解决这个问题,因为我正在尝试使用每 10 分钟运行一次的 cron 作业来“生产”我的文件服务器实例对,该实例对依赖于 Cygwin(CYGWIN_NT-6.0 x86-64)下的一些服务。
cronevents 在调试时非常有用。但现在我正在测试几天的整个运行,cronevents 需要几分钟才能找到问题的根源。那是几天之后的事了;所以我无法想象这是一种在几年后跟踪步骤的有用方法。
至于 cronevents 的实现,我可以看到它是作为 /bin/cronevents.exe 实现的。没有手册页,唯一的建议是
$ cronevents --help
Usage: cronevents
Function: prints cron and crontab Windows event log entries on stdout.
Return value: 0 on success, 1 the if application log cannot be opened.
从上面可以看出,关于如何将 cronevents 审计跟踪维持在限制大小的建议似乎明显缺乏。
我一直搞不清楚这个事件文件保存在哪里。有人能解答一下吗?
答案1
嗨,我看到这个问题已经被问过好几次了。因为在写这篇文章的时候,互联网上还没有其他地方的答案,所以我最好写下我到目前为止采用的解决方法。我的解决方法已经在 Cygwin 1.7.32 / cron 5 下进行了测试。
问题在于 Cygwin 中 cronevents 调用的操作似乎没有记录。但从对主机操作系统(本例中为 Windows 2008)的实验来看,croneents 的操作是读取 Windows 应用程序事件日志文件。然后它检索由 cron 和 crontab 写入该日志的事件。
发现确实如此后,很明显 Windows 中设置的事件日志大小确实存在限制。问题在于默认大小为 19.8MB。实际上,如果您尝试阅读 cronevents 生成的结果行,您可能会发现这个大小相对较大,甚至拖尾最后 100 行所花的时间也比您希望的要长。
在这种情况下,您可能希望减少保留的日志量,假设主机主要工作以提供 cron 负载。如果希望减少保留的日志量,则可以登录主机系统并按如下方式调低应用程序事件日志的大小。
- 登录 Windows 后,运行 eventvwr,它将调出用户界面屏幕。
- 选择“Windows 日志”条目并双击以展开这些列表。
- 右键单击“应用程序”日志并选择属性以查看文件位置、大小、覆盖/轮换策略等。
- “最大日志文件大小 (kB):”框可以调低至 1028 kB。我尝试在框中输入 1028,然后使用 GUI 右下角的“清除日志”按钮清除日志,这样就完成了调整。
根据我的经验,这是一个很好的修复,可以使 cron 事件日志更易于管理。
所以这是我目前找到的最佳解决方案。显然我应该更愿意直接使用 cygwin 远程命令提示符中的命令来找到答案,而不希望需要登录到 Windows 桌面。但是通过 Windows 配置容量解决方案后,应该可以保持服务器运行,并从此以后专注于 cygwin bash 方面。
我认为在 Windows 下设置 cygwin 时预先警告需要预先配置 cronevents 容量会很有用,因此希望此说明可以为未来的开发人员节省一些麻烦。