我的 Linux logrotate 和我的 huges 日志文件

我的 Linux logrotate 和我的 huges 日志文件

我可以在我的服务器中看到一些巨大的日志文件:

stephane@data:~$ ls -lS /var/log
total 55G
-rw-r----- 1 root              15G août   9 23:32 syslog.1
-rw-r----- 1 root              15G août   9 23:32 mail.log.1
-rw-r----- 1 root              15G août   9 23:32 mail.info.1
-rw-r----- 1 root              12G août   9 23:32 mail.warn.1
-rw-r----- 1 root             286M août   9 22:21 mail.err.1
-rw-r----- 1 root              82M août   9 10:32 daemon.log.1
-rw-r----- 1 root             2,0M août   9 23:32 messages.1
-rw-r----- 1 root             1,8M août   9 23:31 auth.log.1
-rw-r----- 1 root             1,7M nov.  14  2016 daemon.log.4.gz
-rw-r----- 1 root             1,7M nov.  28  2016 daemon.log.2.gz
-rw-r----- 1 root             1,5M août   8 04:38 user.log.1
-rw-rw-r-- 1 root             1,4M août   9 23:31 lastlog
-rw-r----- 1 root             1,3M nov.  20  2016 daemon.log.3.gz
-rw-r----- 1 root             659K août   9 09:57 kern.log.1
-rw-r----- 1 root             466K août   9 23:42 syslog

我看到该logrotate实用程序已安装在服务器上:

stephane@data:~$ cat /etc/cron.daily/logrotate
#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

它有一些配置文件:

stephane@data:~$ ll /etc/logrotate.d
total 52K
-rw-r--r-- 1 root 433 nov.  28  2015 apache2
-rw-r--r-- 1 root 173 oct.  17  2014 apt
-rw-r--r-- 1 root  79 nov.   7  2012 aptitude
-rw-r--r-- 1 root 113 mai   24  2013 cron-apt
-rw-r--r-- 1 root 232 juin   5  2014 dpkg
-rw-r--r-- 1 root 313 mars  19  2014 fail2ban
-rw-r--r-- 1 root 847 janv. 27  2016 mysql-server
-rw-r--r-- 1 root 330 févr. 10  2016 nginx
-rw-r--r-- 1 root 152 mars  14  2016 php5-fpm
-rw-r--r-- 1 root 126 juin   8  2012 redis-server
-rw-r--r-- 1 root 162 mai   26  2012 rkhunter
-rw-r--r-- 1 root 553 août   9 23:38 rsyslog
-rw-r--r-- 1 root 235 juin  15  2015 unattended-upgrades

我看到其中一个配置文件应该进行清理:

stephane@data:~$ cat /etc/logrotate.d/rsyslog
/var/log/syslog
{
    rotate 4
    daily
        size 1024k
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        invoke-rc.d rsyslog rotate > /dev/null
    endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
    rotate 4
    weekly
        size 1024k
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        invoke-rc.d rsyslog rotate > /dev/null
    endscript
}

运行该logrotate实用程序似乎没有问题:

stephane@data:~$ sudo /usr/sbin/logrotate /etc/logrotate.conf

我如何才能知道logrotate今天是否已经运行?

我该如何logrotate处理这 3 个大文件?

谢谢您的任何指导。

答案1

我发现您没有启用 cron 日志,或者至少缺少标准文件。这很可能意味着/etc/syslog.conf或中的 cron 条目/etc/rsyslog.conf已被注释。rsyslog.conf从现在开始我将使用该示例,但您的系统可能会使用带有旧文件的旧 syslog 守护程序syslog.conf

请编辑该文件并找到以 cron 开头的条目,如果已​​注释,则取消注释。我的是在 Debian 稳定系统上,如下所示:

cron.*                         /var/log/cron.log

修改并保存文件后,退出并重新启动 syslog/rsyslog 服务,如下所示:

systemctl restart rsyslog

或者,在具有 init 系统的旧版本中,如下所示:

/etc/init.d/rsyslog restart

并创建如下日志文件:

> /var/log/cron

并且你的 cron 守护进程的新条目也应该放在那里。

请检查您的rsyslog.conf文件,看看是否有其他条目将 cron 消息重定向到其他地方。我的文件中有以下内容:

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

这意味着几种类型的消息(包括来自 cron 的消息)都被发送到该文件/var/log/messages,并且您可能已经在那里找到了答案。

根据您的 Linux 发行版,您的文件名可能会有所不同。

答案2

在互联网上快速搜索该错误后,我发现这是一个 debian jessie 错误,与您的情况非常相似,并且涉及从 /dev/xconsole 读取。

你的 conf 文件中是否有类似这样的内容?

daemon.*;mail.*;\
news.err;\
*.=debug;*.=info;\
*.=notice;*.=warn   |/dev/xconsole

我不确定是否可以添加链接,但请检查: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745492https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742113

希望能帮助到你。

相关内容