linux – logrotate設定ファイルの構文 – 複数のワイルドカードエントリは可能ですか?

debian debian-squeeze linux logging logrotate

マンページでは私の質問に答えてくれないし、強制的に回転サイクルを回すのも嫌なので、ここで質問することにしました

logrotateのmanページには、以下のような例が記載されています

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail www@my.org
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}

ワイルドカードが付いている例はすべて1つの項目しか含まれていません。さて、気になるのは、これも許されるのかどうかということです

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
# ... same as above
}

これが理由です。私は複数のバーチャルホストを持っていて、それらのバーチャルホストを「所有している」ユーザによって分割しています。ログファイルは世界で読めるので、フォルダをユーザのホームディレクトリにバインドしたいのですが、 ユーザが「所有している」ログファイルに限定したいのですが、これはログをフォルダに分離することで最も簡単に達成できます (そして、バインドマウントはいずれにせよそのスキームを必要とします)。そこで、私は/var/log/httpd以下のログファイルと、そのディレクトリのサブディレクトリにあるすべてのログファイルの両方を回転させるソリューションを探しています

一般的に、複数のエントリがワイルドカードルールで全く可能なのか、それともフルパスでのみ可能なのかについては、マニュアルページでは手がかりがありません。私は Debian “Squeeze” に付属の logrotate バージョン 3.7.8-6 を使用していますが、これは必ずしもディストロやプログラムのバージョンに特有のものではないと思います

  89  0xC0000022L  2011-03-10


ベストアンサー

はい、複数のワイルドカードを使うことができます。これを行うことで、実際の回転を行わずにファイルをテストすることができます

logrotate -d -f /etc/logrotate.conf
  • -d = デバッグモードをオンにします。デバッグモードでは、ログやlogrotateステートファイルに変更は行われません

  • -f = logrotateに強制的に回転させるように指示します。 これは、logrotate に新しいエントリを追加した後や、古いログファイルを手作業で削除した場合に便利な場合があります

126  Paused until further notice.  2011-03-10


はっきりさせておきたいのですが、それは私がどのようにするかを探してここに来たからです

1つの設定に対して複数のログファイルを指定することができます

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
rotate 5
mail nobody@example.org
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}

29  ThorSummoner  2017-01-18


logrotateのmanページより

ログファイル名は引用符で囲むことができることに注意してください(名前にスペースが含まれている場合は引用符が必要です)。通常のシェルのクォートルールが適用されます

シングルパターンからマルチパターンに移行する際には、引用符の修正や削除を忘れずに行ってください

This works:

/var/log/*.log /var/log/*.blog {

これも効きます

/var/log/*.log
/var/log/*.blog {

これではうまくいきません

'/var/log/*.log /var/log/*.blog' {

これもこれも

"/var/log/*.log /var/log/*.blog" {

シングルパターンの場合と比較してみてください

This works:

'/var/log/*.log' {

そして、これも効きます

"/var/log/*.log" {

logrotate 3.10.0でテストしました

8  Piotr Dobrogost  2017-03-20