logrotate日志轮转工具
验证logrotate
手工执行
sudo logrotate -f /etc/logrotate.conf如果出现报错
error: line 2 too long in state file /var/lib/logrotate.status则删除掉/var/lib/logrotate.status再次执行
debug logrotate
如果系统messages日志出现logrotate: ALERT exited abnormally with [1]则表明logrotate在执行日志轮转时候出现异常,有可能是部分logrotate配置错误导致报错。
这个消息的来源是/etc/cron.daily/logrotate,在这个每日执行的定时脚本中有如下内容
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE注意:默认SELinux安全设置不允许logrotate轮转/var/log目录之外的文件
/var/log目录之外的文件如果使用logrotate来轮转非/var/log目录下日志文件,由于SELinux限制logrotate访问没有SELinux文件上下文类型的目录,所以默认只能轮转具有var_log_t文件上下文的/var/log目录。
解决SELinux限制logrotate访问目录方法是为目录增加一个
var_log_t的文件上下文
检查目录的安全上下文是使用
ls --scontext命令,即
可以看到输出
所以,也类似设置其他需要logrotate轮转目录的文件上下文
诊断logrotate
首先检查
logrotate.status文件
logrotate.status文件记录了需要轮转监控的所有文件
通过debug模式运行logrotate
或者通过以下命令记录debug的信息
如果logrotate配置的轮转日志目标文件不存在,则会提示
ALERT exited abnormally with [1]错误。
参考
Last updated
Was this helpful?