logrotate
ログのローテートコマンド
設定ファイル
メイン
/etc/logrotate.conf
個々
/etc/logrotate.d/*
権限は 0644
初回実行時は注意が必要
/var/lib/logrotate.status にローテート対象ファイルが記載されてる
code:log
"/opt/domains/wiki.renoretriever.net/logs/access.log" 2014-1-16
当然そこに記載してないファイルに関しては、ローテートされない
初回実行時にはこのファイルに記載されるだけで、実際にはローテートされない
動作確認には、ファイルを編集するか、翌日再確認するかになる
デバッグ
code:shell
# logrotate -d /etc/logrotate.d/test
/etc/logrotate.conf の設定は読まないので設定値はデバッグ対象のファイルに書いてあるものが全て
即時ログローテート
全部
code:shell
# logrotate -f /etc/logrotate.conf
一部
code:shell
# logrotate -f /etc/logrotate.d/test
注意点
上記の場合、共通設定の記載してある、/etc/logrotate.conf の設定内容を読み込まないため、上手く動作しない場合がある
rotate 無い場合、ファイル消えます
複数ファイルをログローテート対象
code:shell
/var/log/test01.log /var/log/test02.log {
daily
missingok
notifempty
rotate 7
size 1M
}
copytruncate
table:項目
compress ローテート後、圧縮(gzip)
missingok 対象のファイルがなくてもエラは出さない
notifempty ログファイルが空ならローテートしない
sharedscripts 複数指定したログファイルに対し、postrotate または prerotate で記述したコマンドを実行
olddir dir ローテーションした旧ログを dir に移動
移動先は元と同じデバイス上でなければならない
元のログに対する相対指定も有効
postrotate script endscript 実際にローテーションが行われた後 (lastaction よりは前) に実行するスクリプト
個別指定内でのみ指定可能
prerotate script endscript 実際にローテーションの条件に合致するログファイルがひとつでもあった場合に、
ローテーションの前に (firstaction よりは後) に実行するスクリプト
個別定義内でのみ指定可能
rotate num 世代ローテーションのステップ数
例えば元のログファイルが a.log だとして、num を 2 にしておくと a.log => a.log.1 => a.log.2 => 廃棄 となる
0 だと a.log => 廃棄
size numK/M ログのサイズが num バイトを超えていればローテーションを行う
この条件は daily, weekly などの条件より優先される
キロ/メガバイトでの指定も可能
#Linux_Commands