我可以在我的服务器中看到一些巨大的日志文件:
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=745492 和https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742113
希望能帮助到你。