有一台Linux虚拟机的messages日志文件自2023年7月下旬开始没有按周为周期重新生成新的日志,一直累积在同一个messages文件中,如下所示:
[root@ logrotate.d]# ls -l /var/log|grep me
-rw-r--r-- 1 root root 107170 Nov 15 11:01 dmesg
-rw-r--r-- 1 root root 107046 Nov 15 10:43 dmesg.old
-rw------- 1 root root 3189979854 Nov 15 12:58 messages
-rw------- 1 root root 114859853 Jun 25 03:19 messages-20230625
-rw------- 1 root root 113785976 Jul 2 03:47 messages-20230702
-rw------- 1 root root 124481527 Jul 9 03:16 messages-20230709
-rw------- 1 root root 124152056 Jul 16 03:09 messages-20230716
查看日志的循环配置信息,都是正常的默认配置。
# more /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
使用logrotate命令的诊断选项-d对日志进行诊断,发现syslog配置的文件属主被更改,正常是root。
[root@ logrotate.d]# logrotate -d /etc/logrotate.d/syslog
Ignoring /etc/logrotate.d/syslog because the file owner is wrong (should be root).
Allocating hash table for state file, size 15360 B
Handling 0 logs
[root@logrotate.d]# ls -l /etc/logrotate.d/syslog
-rw-r--r--. 1 remoter 1001 224 Apr 11 2018 /etc/logrotate.d/syslog
更改syslog配置文件的属主为root,问题解决。
参考:How to debug logrotate warnings or errors when logrotate is not running correctly