我在“logrotate.d”目录中添加了两个脚本,以便轮换我的应用程序日志。这是其中之一的配置:
<myLogFilePath> {
compress
copytruncate
delaycompress
dateext
missingok
notifempty
daily
rotate 30
}
“cron.daily”目录中有一个“logrotate”脚本(根据 cron 日志似乎每天都在运行):
#!/bin/sh
echo "logrotate_test" >>/tmp/logrotate_test
#/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
/usr/sbin/logrotate -v /etc/logrotate.conf &>>/root/logrotate_error
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
第一个回声语句正在工作。
但我发现我的应用程序日志单独没有得到轮换,而其他日志(如 httpd)正在轮换**
**而且我在提到的“logrotate_error”文件中也看不到任何输出(对所有用户都有写权限)。
但是系统日志说:“logrotate:ALERT 异常退出 [1]”
但是当我在“cron.daily”脚本中手动运行相同的“logrotate”时,一切似乎都正常。
为什么它在每日 cron 计划中不轮换?我在这里做错了吗?
如果我能得到这么急需的帮助,那就太好了。
更新: 看起来,这是因为 selinux - 我的用户主目录中的日志文件受到 selinux 的限制以及运行 logrotate 脚本的时间:
SELinux is preventing /usr/sbin/logrotate from getattr access on the file /home/user/logs/application.log