一定の間隔でスケジュールすることなく、logrotateの1つの反復を手動で実行することは可能ですか?
一定の間隔でスケジュールすることなく、logrotateの1つの反復を手動で実行することは可能ですか?
回答:
はい: logrotate --force $CONFIG_FILE
--force
彼らはなどMinSizeプロパティ、年齢、として指定された基準満たしていない場合でも、ファイル(複数可)を回転します
logrotate --force /etc/logrotate.d/
(ディレクトリ名だけで)すべてをローテーションできます
--force
、ファイルが基準(年齢、サイズなど)を満たしていない場合でもローテーションを強制することは事実ですが、これがで発生しlogrotate -d
ない実際の問題を見つける唯一の方法であることを考慮してください(たとえば、サーバーが不足しているなど) logrotateが原因で数か月間実行されなかったためのスペース...そしてエラー--force
がFile exists
発生したことがわかったおかげで、これらのファイルを手動で削除して、ローテーションが再び正しく機能するようになりました!
logrotate -d [your_config_file]
デバッグモードを呼び出し、何が起こるかについての詳細な説明を提供しますが、ログファイルはそのままにしておきます。
logrotate --force
うまくいきました。
単一の特定のディレクトリまたはデーモンのログファイルを強制実行する場合、通常はで設定を見つけることができ/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ログのみがローテーションされます。
logrotate -d /etc/logrotate.conf
すると、含まれている他のconfファイルも実行されます。
次のコマンドを発行して、指定した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
}
/var/lib/logrotate.statusを編集して、テストするログファイルの「最後にローテーションされた」日付をリセットします。
次にを実行しlogrotate YOUR_CONFIG_FILE
ます。
または、-forceフラグを使用できますが、logrotate.statusを編集すると、回転するものと回転しないものの精度が向上します。
/var/lib/logrotate.status
ファイルはDebian Squeezeには存在しません。
この問題を解決するためのシェルスクリプトを作成しました。
http://www.ict.griffith.edu.au/anthony/software/#logrotate_one
このスクリプトは、「/ etc / logrotate.d」にある単一のlogrotateサブ構成ファイルのみを実行しますが、グローバル構成ファイル「/etc/logrotate.conf」にあるグローバル設定を含めます。それをテストするために他のオプションを使用することもできます...
例えば...
logrotate_one -d syslog