概要
logrotateは、設定ファイルに基づいてログファイルを定期的に管理します。古いログは保持期間に従って削除または圧縮され、ディスク容量を節約し、新しいログファイルが生成されてシステムが安定して動作するように支援します。ほとんどのLinuxシステムでは、cronジョブを通じて毎日自動的に実行されます。
主な機能
- ログファイルの自動ローテーションと保持
- 古いログファイルの圧縮と削除
- ディスク容量の効率的な管理
- 設定ファイルに基づいた柔軟なルールの適用
- ほとんどのLinuxディストリビューションに標準搭載
主なオプション
logrotateは主に設定ファイルを通じて動作しますが、コマンドラインオプションを使用して特定の動作を制御できます。
実行制御
ファイル指定
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`logrotate` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
logrotateは主にcronによって自動実行されますが、手動で実行したり、特定のオプションを使用してテストしたりできます。
デフォルト設定ファイルでlogrotateを実行
sudo logrotate /etc/logrotate.conf
通常はcronによって実行されますが、手動でデフォルト設定ファイルを使用してlogrotateを実行するコマンドです。
デバッグモードで実行して変更内容をプレビュー
sudo logrotate -d /etc/logrotate.conf
実際にログファイルを変更せずに、logrotateがどのような作業を行うかをシミュレーションして表示します。新しい設定適用前のテストに必須です。
ログファイルを強制的にローテーション
sudo logrotate -f /etc/logrotate.conf
ローテーション条件(例:時間、サイズ)を無視して即座にログファイルをローテーションします。緊急時や特定のログを即座に処理する必要がある場合に使用します。
特定のアプリケーションの設定ファイルで実行
sudo logrotate -c /etc/logrotate.d/nginx
`/etc/logrotate.d/` ディレクトリ内の特定のアプリケーション設定ファイルのみを使用してlogrotateを実行します。
ヒントと注意点
logrotateを効果的に使用するためのヒントと注意点です。
設定ファイルの場所
logrotateの設定ファイルは主に2つの場所にあります。
- /etc/logrotate.conf: グローバル設定ファイルで、すべてのログに適用されるデフォルト値や、他の設定ファイルのインクルードを行います。
- /etc/logrotate.d/: 個別のアプリケーション(例:Nginx、Apache、MySQL)のログローテーションルールを定義するファイルが配置されるディレクトリです。
主な設定ディレクティブ
logrotate設定ファイルでよく使用されるディレクティブです。
- rotate N: N個のローテーションされたログファイルを保持します。
- daily/weekly/monthly/yearly: ログのローテーション周期を指定します。
- compress: ローテーションされたログファイルを圧縮します。
- delaycompress: 次のローテーション時に前のログを圧縮します。
- notifempty: ログファイルが空の場合はローテーションしません。
- missingok: ログファイルが存在しなくてもエラーを発生させません。
- create [mode owner group]: 新しいログファイルを生成します。
- postrotate/endscript: ログローテーション後に実行するスクリプトを定義します。
設定変更時のテスト
新しいlogrotate設定を適用する前に、必ず`-d`(または`--debug`)オプションを使用してテストしてください。これは、実際のシステムに影響を与えずに設定の有効性を検証できる最も安全な方法です。
cronとの連携
logrotateは通常、`/etc/cron.daily/logrotate`スクリプトを通じて毎日自動的に実行されます。このスクリプトは`/etc/logrotate.conf`ファイルを読み込み、設定されたすべてのログローテーション処理を実行します。