syslogローテーションで利用可能なアーカイブの数を制限する

syslogローテーションで利用可能なアーカイブの数を制限する

私のファイルには次の設定があります/etc/logrotate.d/rsyslog。その中で、ローテーションする日数を 4 に、ローテーション アーカイブ ファイルのサイズを 100k に明示的に宣言しました/var/log/syslog

私が知りたいのは、アーカイブが 100k に達したら自動的にローテーションされるかどうかです。必要に応じて、1 日で合計 4 回までローテーションされますか? 継続的に 100k に達したために 4 回ローテーションする必要がある場合は、そのように実行され、4 つのファイルのみが保持されますか? 質問を完全に説明できないかもしれませんが、私が求めているのは、ローテーションされたアーカイブ ファイルが 100k に達したら自動的にローテーションされ、ローテーションの合計回数が 4 ファイルを超えないことです。したがって、1 時間の間に 8 回のローテーションが必要な場合は、最後にローテーションされた 4 つのアーカイブのみが存在することになります。I do see a daily configuration, not sure if that is complemented with the rotate configuration?

アーカイブ ファイルの最大数を設定する必要があり、日次ローテーション構成でそれが実行されていない場合は、何をする必要がありますか?

/var/log/syslog
{
        rotate 4
        size 100k
        daily
        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/rsyslog.log
/var/log/debug
/var/log/messages
{
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
          invoke-rc.d rsyslog rotate >/dev/null
        endscript
}

また、syslog ファイルのサイズを 1 MB に制限する機能もありますsyslog configuration。そのため、syslog が 1 MB に達すると、自動的にローテーションするはずです (まだテストされていません)

auth,authpriv.*    -/var/log/auth.log
$outchannel mysyslog,/var/log/syslog,1048576
*.*;auth,authpriv.none  :omfile:$mysyslog

答え1

logrotate は、ファイルが「サイズ 100k」に達したときにローテーションをトリガーしません。これはスケジュールされたチェックによって動作します。

設定の最初のセクションがどのように機能するかを説明します。/var/log/syslog を毎日チェックし、100k より大きい場合はローテーションし、4 つのコピーがある場合は最も古いものを削除します。

設定ファイルで daily を hourly に変更できます。次に、まだない場合は cp /etc/cron.daily/logrotate /etc/cron.hourly/logrotate を実行します。

関連情報