web-dev-qa-db-ja.com

サイズでlogrotate-cronを変更する必要がありますか?

私の現在のlogrotate構成は次のようになります(logrotate 3.8.7を使用)

"/var/log/haproxy.log" {
  daily
  size 250M
  rotate 1
  create 644 root root
  missingok
  compress
  notifempty
  copytruncate
}

1日に1回は正常に実行されますが、サイズが250Mを超えると回転しません。そのため、サイズに関係なく、1日の終わりまでローテーションします。

Maxsizeオプションがあることを読みましたが、size 250Mmaxsize 250Mに変更しても機能しません。

1時間ごとにlogrotateを実行するようにcronを設定する必要がありますか?または、がそのファイルサイズをリッスンしているためにlogrotateが自動的に実行され、何か他の問題が発生していますか?

10
Hommer Smith

はい、これを実現するには、logrotateを1日に複数回実行する必要があります。これは、manページの秒の段落で答えられます logrotate(8)

通常、logrotateは毎日のcronジョブとして実行されます。ログの基準がログのサイズに基づいており、logrotateが毎日複数回実行されている場合、または-fまたは--forceオプションが使用されています。

logrotateを毎日ではなく1時間ごとに実行したい場合は、移動できます。

mv /etc/cron.daily/logrotate /etc/cron.hourly

3.8.1以降、maxsizeが存在します。 sizemaxsizeの違いは次のとおりです。

maxsizeサイズ

追加で指定された時間間隔(dailyweeklymonthly、またはyearly)の前であっても、サイズがバイトより大きくなると、ログファイルがローテーションされます。関連するsizeオプションは、時間間隔オプションと相互に排他的であることを除いて同様です。これにより、最後のローテーション時間に関係なくログファイルがローテーションされます。 maxsizeを使用すると、ログファイルのサイズとタイムスタンプの両方が考慮されます。

これはどちらもあなたの使用に適しています:間隔なしのsizeと間隔も必要な場合はmaxsize。ただし、これによってデフォルトでlogrotateが毎日のみ実行されるという事実は変わりません。ほとんどの場合、ログが250Mを超えるまでに1日よりもはるかに長い時間がかかるため、この間隔はほとんどの場合に適しています。

7
Esa Jokinen