我在 CentOS 6 上配置了 lograotate。手动运行它时它工作正常,但使用 CRON 时它不起作用。Cron 在其日志中显示:“一切正常,我运行你的命令”,但什么也没发生。详情:
cat /etc/logrotate.d/myproject
/var/opt/myproject/log/error.log {
size=200M
rotate 25
missingok
notifempty
copytruncate
nocreate
nocompress
nodateext
}
猫/etc/cron.d/1everymin
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
* * * * * root /etc/cron.min/logrotate
猫/etc/cron.min/logrotate
#!/bin/sh
#/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
/usr/sbin/logrotate -v /etc/logrotate.conf > /logrotate.log
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
我在 /var/log/cron 中看到的每一分钟
Jan 16 21:40:01 localhost CROND[31541]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:41:01 localhost CROND[31552]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:42:01 localhost CROND[31561]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:43:01 localhost CROND[31575]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:44:01 localhost CROND[31587]: (root) CMD (/etc/cron.min/logrotate)
但日志实际上并没有被轮换:什么也没有发生,/logrotate.log 是空的
如果我执行/etc/cron.min/logrotate手动一切正常,/logrotate.log 有关于日志旋转的信息
答案1
如果启用了 SELinux,则不允许 cron 写入 / 要查看它是否已启用,请使用:
getenforce
尝试暂时将日志记录到其他地方,例如 /var/log/logrotate.log
假设已启用 auditd,请确保在 /var/log/audit/auditd.log 中查找拒绝。
答案2
我认为size=200M
是错误的,而size 200M
根据日志旋转是正确的手册页在你的配置文件中/etc/logrotate.d/myproject