logrotate 未按预期压缩文件

logrotate 未按预期压缩文件

使用 logrotate 配置。下面我期望程序在创建第一个备份文件后开始压缩日志文件。相反,我看到的是这样的:

[root@host ~]# ll /var/log
total 1.2M
drwxr-xr-x 2 root root 4.0K Aug 31 13:29 ./
drwxrwxr-x 7 1000 1000 4.0K Aug 29 01:49 ../
-rw-r--r-- 1 root root  289 Aug 29 02:11 auth.log.1
-rw-r--r-- 1 root root  382 Aug 31 00:59 cron.log.1
-rw-r--r-- 1 root root  41K Aug 31 14:16 messages
-rw-r--r-- 1 root root 201K Aug 31 13:26 messages.0
-rw-r--r-- 1 root root 201K Aug 30 23:11 messages.0.1
-rw-r--r-- 1 root root  88K Aug 31 00:59 messages.1
-rw-r--r-- 1 root root  38K Aug 31 14:16 user.log
-rw-r--r-- 1 root root 201K Aug 31 13:29 user.log.0
-rw-r--r-- 1 root root 201K Aug 30 23:12 user.log.0.1
-rw-r--r-- 1 root root  89K Aug 31 01:02 user.log.1

[root@host ~]# cat /etc/logrotate.conf
compress

include /etc/logrotate.d

/var/log/* {
        rotate 7
        daily
    delaycompress
        missingok
        sharedscripts
        postrotate
                /usr/bin/killall -HUP syslogd
        endscript
}

目标系统是BusyBox v1.20.2。

也许问题是我已指定轮换 /var/log 下的所有日志,而不是明确命名它们?我更希望能够旋转 /var/log 下的所有日志,并使其按预期工作。

答案1

问题是/var/log/*太宽,因此会匹配先前旋转的文件并再次旋转它们。您要么需要指定更明确的列表,或更受限制的通配符模式,要么将旧日志移动到新目录中,这样它们就不会被弄错。例如,我会替换

/var/log/* { ... }

经过

/var/log/*.log /var/log/messages { ... }

相关内容