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 { ... }