1つのlogrotateチェックを手動で実行することは可能ですか?


541

一定の間隔でスケジュールすることなく、logrotateの1つの反復を手動で実行することは可能ですか?


3
logrotateの問題は、グローバル構成ファイルが1つあり、グローバル構成ファイルで設定されたオプションを適用したまま、単一のログローテーションサブ構成ファイルを実行できないことです。つまり、cronから毎晩実行する場合とまったく同じように、ログローテーションファイルのチェックを1つだけ実行する優れた方法はありません。「これらのログファイルへの制限」オプションを使用することもできますが、「グローバル構成を実行しますが、このサブ構成ファイルのみを含める」ことができます。
anthony 2016年

回答:


717

はい: logrotate --force $CONFIG_FILE


115
ノート--force彼らはなどMinSizeプロパティ、年齢、として指定された基準満たしていない場合でも、ファイル(複数可)を回転します
xofer

4
/etc/logrotate.d/custom.confにlogrotate設定ファイルを配置すると、ログが自動的にローテーションする必要があるときにサイズ/時間を指定する必要がなくなりますか?または、構成を自動的にローテーションさせたくない場合は、別のフォルダに配置する必要がありますか?
Damainman 2013

18
「notifempty」という基準は、「-force」によって無視されません。これはしばらく困惑したので、@ xoferステートメントの例外としてこれを述べます。
thelogix

16
logrotate --force /etc/logrotate.d/(ディレクトリ名だけで)すべてをローテーションできます
fcm

1
これは--force、ファイルが基準(年齢、サイズなど)を満たしていない場合でもローテーションを強制することは事実ですが、これがで発生しlogrotate -dない実際の問題を見つける唯一の方法であることを考慮してください(たとえば、サーバーが不足しているなど) logrotateが原因で数か月間実行されなかったためのスペース...そしてエラー--forceFile exists発生したことがわかったおかげで、これらのファイルを手動で削除して、ローテーションが再び正しく機能するようになりました!
lucaferrario

559

logrotate -d [your_config_file] デバッグモードを呼び出し、何が起こるかについての詳細な説明を提供しますが、ログファイルはそのままにしておきます。


81
「logrotate confをテストするにはどうすればよいですか?」のような質問の答えを探してここに来た人 これは単にconfを
テスト

あなたのアプローチで問題がなかったので、試してみましたがlogrotate --forceうまくいきました。
Benyamin Jafari、

122

単一の特定のディレクトリまたはデーモンのログファイルを強制実行する場合、通常はで設定を見つけることができ/etc/logrotate.d、それらはスタンドアロンで動作します。

で指定されたグローバル構成/etc/logrotate.confは適用されないことに注意してください。そのため、これを行う場合は、必要なすべてのオプションを/etc/logrotate.d/[servicename]ファイル具体的に。

あなたはそれを試して-d何が起こるかを見ることができます:

logrotate -df /etc/logrotate.d/nginx

次に、(例としてnginxを使用して)実行できます。

logrotate -f /etc/logrotate.d/nginx

そして、nginxログのみがローテーションされます。


1
これは適切ですが、「/ etc / logrotate.conf」にあるグローバル設定はすべて失われます。この問題を解決するために、グローバルと特定のlogrotateファイルをマージし、それを使用するスクリプトを作成しました。(私の答えを参照してください)。
anthony

を使用logrotate -d /etc/logrotate.confすると、含まれている他のconfファイルも実行されます。
wmassingham

61

冗長+強制モードで実行することをお勧めします。

logrotate -vf /etc/logrotate.conf


36

logrotateをすべて実行する方法は次のとおりです。

logrotate -f /etc/logrotate.conf

これは、他のlogrotate構成も含むプライマリlogrotateファイルを実行します


21

次のコマンドを発行して、指定したlogrotateを実行します。

logrotate -vf /etc/logrotate.d/custom

オプション:

-v:プロセスを表示

-f:強制実行

カスタム:ユーザー定義のログ設定

例:mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

完全な例を実際に提供するためのplus1。PSどのようにしてlogrotateが実際にファイルに対して何を行うを判断できます
personal_cloud

7

/var/lib/logrotate.statusを編集して、テストするログファイルの「最後にローテーションされた」日付をリセットします。

次にを実行しlogrotate YOUR_CONFIG_FILEます。

または、-forceフラグを使用できますが、logrotate.statusを編集すると、回転するものと回転しないものの精度が向上します。


この/var/lib/logrotate.statusファイルはDebian Squeezeには存在しません。
Lashae

/ var / lib / logrotate / statusを試してください。これがdebian / redhatなのか、「。」を付けたのかはわかりません。「/」を入れるべきだったところ。
Ben Aveling

2

この問題を解決するためのシェルスクリプトを作成しました。

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

このスクリプトは、「/ etc / logrotate.d」にある単一のlogrotateサブ構成ファイルのみを実行しますが、グローバル構成ファイル「/etc/logrotate.conf」にあるグローバル設定を含めます。それをテストするために他のオプションを使用することもできます...

例えば...

  logrotate_one -d syslog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.