logrotate:如何检测失败

# logrotate -d /etc/logrotate.conf ... reading config info for /var/log/rsyncd.log error: rsync:12 duplicate log entry for /var/log/rsyncd.log error: found error in /var/log/rsyncd.log , skipping removing last 1 log configs ... # echo $? 0 

由于logrotate通常使用cron运行,所以cron退出,因为logrotate以OK退出。 这应该以不同的方式做? 这是一个错误,还是由于某种原因,我还没有理解呢?

更新:这个问题不是关于错误的来源。 为了说明返回代码总是0(= OK),我故意在那里放置一个错误,我对这种情况感兴趣。

好吧,我猜测logcheck的devise者决定这个场景是一个值得抱怨的configuration错误,但这不是一个操作错误。 在这种情况下,logcheck仍然可以运行,仍然在/var/log/rsyncd.log上运行。 忽略第二个configuration文件不会阻止logcheck继续,所以报告的状态是0。

特别是对于服务器软件,假定在部署之前检查了configuration文件。 虽然这里的上涨会更加明显地提醒这个问题,但是缺点是对依赖于日志检查的任何任务的关注。

所有这一切,在传递-d和正常操作时都不能依赖状态。 引用man logcheck在debugging模式下,不会对日志或logrotate状态文件进行更改。 。 因此,读取事件和详细报告它们的操作已经成功,应该返回0.这可能与您在debugging模式下得到的结果无关。

在任何情况下,最后都可能是一场软件devise辩论。 作为一个系统pipe理员,生产中的configuration文件的validation应该完成自己的任务。

把所有这些都放在configuration文件中,这些configuration文件肯定会给你一个非零的代码在任何体面的软件。