看来我的 syslog 生成的日志文件每天要轮换两次。我认为这是因为 /etc/cron.daily/logrotate 和 /etc/cron.daily/sysklogd 的工作重叠。
以下是 sysklogd 脚本中的相关行:
logs=$(syslogd-listfiles)
test -n "$logs" || exit 0
for LOG in $logs
do
if [ -s $LOG ]; then
savelog -g adm -m 640 -u ${USER} -c 7 $LOG >/dev/null
fi
done
处理此问题的最佳常见做法是什么?syslog 生成的文件不应列在 logrotate 中吗?如果我想使用 logrotate 的一些更高级的功能(如 postrotate 脚本),我应该尝试让 /etc/cron.daily/sysklogd 执行此操作,还是应该注释掉这些行并让 logrotate 执行此操作?
答案1
当 sysklogd 开始进行日志轮换时,我非常恼火——这并不是说它是一种其他地方不存在的缺失功能。但是,在我的系统上,logrotate 并未配置为对系统日志执行任何操作——这是您手动配置的吗?
为了保持最小意外原则,我让 sysklogd 轮换它自己的日志(因为,如果其他人需要维护我的一个系统,他们最好尽可能采用默认行为),但如果你想要 logrotate 的高级功能,我会关闭 sysklogd cron 作业,注释掉指向正确位置的指针,然后让 logrotate 疯狂运行。
答案2
什么分布?
如果您运行“syslogd-listfiles”,该列表中输出的任何文件是否也通过 /etc/logrotate.d/ 中的文件进行管理?
在我的 Ubuntu 机器上,/etc/cron.daily/sysklogd 实际上没有做任何事情,因为 /usr/sbin/syslogd-listfiles 不存在。