Logrotateを一定の間隔でスケジュールせずに手動で1回実行することは可能ですか?
はい:logrotate --force $CONFIG_FILE
logrotate -d [your_config_file]
はデバッグモードを起動し、何が起こるかについての詳細な説明を与えますが、ログファイルはそのまま残します。
単一の特定のディレクトリまたはデーモンのログファイルを強制実行したい場合は、通常/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 -vf /etc/logrotate.conf
Logrotateをすべて実行する方法は次のとおりです。
logrotate -f /etc/logrotate.conf
他のlogrotate設定も含まれているプライマリlogrotateファイルを実行します
次のコマンドを発行します。指定された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を編集することで、回転させて回転させないことに関してより正確にすることができます。
問題を解決するためのシェルスクリプトを作成しました。
http://www.ict.griffith.edu.au/anthony/software/#logrotate_one
このスクリプトは、 "/ etc/logrotate.d"にある単一のlogrotateサブ設定ファイルのみを実行しますが、グローバル設定ファイル "/etc/logrotate.conf"からグローバル設定を含みます。それをテストするために他のotpionsを使うこともできます...
例えば...
logrotate_one -d syslog