在 CentOS 上,Logrotate 无法通过 cron 运行

在 CentOS 上,Logrotate 无法通过 cron 运行

我在 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

相关内容