Logrotateは、ローテーションされたログファイル名の字句的にソートされたリストの順序に従って、またファイルの経過時間(ファイルの最終変更時刻を使用)によってファイルを削除します
-
回転 回転するファイルの最大数です。ローテーションされたログファイルの数が多い場合、それらの名前は字句的に並べ替えられ、字句的に最小のものが削除されます。
-
最大値 ローテーションされたログファイルを削除するための別の基準を定義します。指定された日数より古いローテーションされたログファイルはすべて削除されます。日付は、ファイル名からではなく、ファイルの最終変更時刻から検出されることに注意してください。
-
dateformat ローテーションされたファイルの日付に特定のフォーマットを許可します。マニュアルページでは、形式を使用すると字句的に正しい並べ替えが行われることに注意してください。 。
-
昨日 1日前のログファイル名で日付を使用できます。
毎日ローテーションされるファイル(例:7)で指定された日数を保持するには、rotate
を設定する必要があります 値を7にすると、maxage
を無視できます。 、ファイルが本当に毎日作成およびローテーションされている場合。
ログの作成が数日間行われない場合、例: 14日間、ローテーションされたログファイルの数は同じままです(7)。
maxage
常に古すぎるファイルを削除することにより、「ログが生成されない」シナリオの状況を改善します。ログが作成されない状態が7日間続くと、ローテーションされたログファイルは存在しなくなります。
dateformat
は使用できません OPが示すように、字句的に並べ替えることはできません。 dateformat
を台無しにする おそらく、実際に必要なもの以外のローテーションされたログファイルが削除されることになります。
ヒント :-d
を使用してコマンドラインからlogrotateを実行します ドライランを実行するオプション:logrotateが何をするかがわかりますが、実際には何もしません。次に、-v
を使用して手動実行を実行します (詳細)実行されたことが希望どおりであることを確認できるようにします。
解決策:cronによって作成されたログをクリーンアップします
コンセプトは次のとおりです。
cronにログファイルの作成と更新を許可しますが、デフォルトのdateext
を使用する場合は、logrotateの標準ファイル名に従って、ファイルを作成するために小さな変更を加えます。
/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log
logrotateは、古すぎるログファイルを削除する場合にのみ使用してください
- 存在しないログファイル
/data/tier2/scripts/logs/recover_standby_SID.log
を目指します -
missingok
を使用する ログローテーションのクリーンアップを実行させる rotate
を設定します 保持するログファイルの数をカバーするのに十分な高さ(1日に1つの「ローテーション」ログファイルがある場合は少なくとも7つですが、9999のように非常に高く設定しても安全です)-
maxage
を設定します これにより、最終変更時間が7日を超えるファイルが削除されます。 -
dateext
logrotateは、ローテーションされたように見える古いファイルを確実に検索するために使用されます。
Logrotate構成ファイルは次のようになります。
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 9999
maxage 7
dateext
}
解決策:1日1回logrotateで直接ローテーションします
ソースリカバリスタンバイファイルがどのように作成されるかはわかりませんが、Oracleまたはあなたのスクリプトが定期的または継続的にファイルに追加されていると思います/data/tier2/scripts/logs/recover_standby_SID.log
>
コンセプトは次のとおりです。
-
logrotate
で1日1回ファイルをローテーションします - リカバリデータを含むログファイルを直接操作する
/data/tier2/scripts/logs/recover_standby_SID.log
daily
1日に1回ローテーションが発生します(cron
の方法に関して)daily
を理解している )rotate
7(またはそれ以上の数値)に設定する必要があります。-
maxage
7(日)に設定 -
dateext
デフォルトのログローテーション日付サフィックスを使用するには -
dateyesterday
ローテーションされたファイルの日付のサフィックスが1日前に戻るようにするために使用されます。 -
missingok
ローテーションする新しいコンテンツが存在しない場合でも、古いファイルをクリーンアップします。
Logrotateの設定は次のようになります:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 7
maxage 7
dateext
dateyesterday
}
copytruncate
で少し遊ぶ必要があるかもしれないことに注意してください および外部プロセスによって作成されたソースログファイルの方法と、ローテーションの動作にどのように反応するかに関連する他の同様のオプション。