Logrotate 每天运行并通过电子邮件向我发送报告。这一直运行良好,但现在我每天还会收到以下电子邮件:
Date: Mon, 10 Aug 2009 04:02:08 +0100
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <root@dev> run-parts /etc/cron.daily
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
/etc/cron.daily/logrotate:
ERROR No file found for /var/log/apache*/*error.log
ERROR No file found for /home/www/myhomepage/error.log
ERROR No file found for /var/www/*/logs/access_log
上述日志目录不存在,我不知道为什么 logrotate 突然决定包含它们。我认为这个问题是在我安装 fail2ban 后开始的。
/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 0
/etc/logrotate.conf 包含:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
/etc/logrotate.d/httpd 包含:
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
我不确定 /var/log/apache*/ 的引用在哪里error.log,/home/www/myhomepage/error.log 或 /var/www//logs/access_log 是。
有任何想法吗?
谢谢,帕特里克
编辑感谢您的回复,以下是我尝试过的:
vatican:~# grep myhomepage /etc/logrotate.d/*
vatican:~# grep apache /etc/logrotate.d/*
vatican:~# grep www /etc/logrotate.d/*
没有返回任何内容!这很奇怪!
编辑 再次感谢您的回复。问题毕竟是由 fail2ban 引起的。引用是在 jail.conf 文件中进行的。我已更正这些引用,问题已解决。
答案1
好的,这似乎与 logrotate 无关。我认为您看到的错误来自 fail2ban,它正在寻找这些文件。尝试在 /etc/logrotate.d/fail2ban 中手动运行来自 fail2ban 的后记(或类似的东西),您将看到错误。
答案2
扩展 HD 的评论:您需要更仔细地查看 logrotate.d 目录。
许多软件包直接在其中安装 logrotate 配置文件。该目录下的任何 logrotate 配置文件都将作为 cron.daily logrotate 作业的一部分运行。
查看该目录,看看是否无法根据名称找到有问题的文件。如果找不到,grep 语句可能是最好的选择:
grep myhomepage /etc/logrotate.d/*
根据需要编辑或删除您发现的文件。
如果您不确定这些文件来自哪里,以下命令(在 Debian/Ubuntu 上)将告诉您:
dpkg -S /etc/logrotate.d/FILENAME
在基于 RPM 的系统上,以下命令应该告诉您哪个包安装了该文件:
rpm -qf /etc/logrotate.d/FILENAME
答案3
被调用的命令是:
/usr/sbin/logrotate /etc/logrotate.conf
我可能会查看:
/etc/logrotate.conf