カテゴリ

コマンドリファレンス とりあえずメモ CentOS その他

参照:【日本語man】logrotateの全オプション解説
参照:@IT

目次

頻度に関わるキーワード

daily
ログを毎日ローテーションする
weekly
ログを毎週ローテーションする
monthly
ログを毎月ローテーションする
size ファイルサイズ
ログファイルが指定したファイルサイズ以上になったらローテーションする

ローテーション実行に関わるキーワード

ifempty
ログファイルが空でもローテーションする
notifempty
ログファイルが空ならローテーションしない
missingok
ログファイルが存在しなくてもエラーを出さずに処理を続行
nomissingok
ログファイルが存在しない場合にエラーを出す

ローテーション実行時に実行する処理に関わるキーワード

postrotate~endscript
postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行
prerotate~endscript
postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行
sharedscripts
複数指定したログファイルに対し、postrotateまたはprerotateで記述したコマンドを実行
(まとめて1回)
nosharedscripts
複数指定したログファイルに対し、postrotateまたはprerotateで記述したコマンドを実行
(ファイルごとに実行)

ローテーション後のログファイルの作り方に関わるキーワード

create パーミッション ユーザー名 グループ名
ローテーション後に空のログファイルを新規作成。ファイルのパーミッション、ユーザー名、グループ名を指定可能
nocreate
新たな空のログファイルを作成しない

ローテーションする際のファイルの作り方に関わるキーワード

copytruncate
ログファイルをコピーし、内容を削除
通常は `mv logfile rotatefile; touch logfile` 、このキーワードをつけることで `cp logfile rotatefile; echo "" > logfile` と同等の動作となる。
ログファイルを掴み続けるアプリケーションの場合、 `mv logfile rotatefile` としてもログの出力は rotatefile に続く。
cp → ファイルを空にする間若干のログが失われる。
[参考:https://blog.willnet.in/entry/20081001/1222836601](https://blog.willnet.in/entry/20081001/1222836601)

ローテート後のファイルに関わるキーワード

rotate 回数
ローテーションする回数を指定
su ユーザー名 グループ名
指定されたユーザーとグループで、ログファイルをローテーションします。通常、デフォルトはいずれもrootです。ユーザー名にはローテーションに用いるユーザー名、グループ名にはローテーションに用いるグループ名を指定します。
noolddir
ローテーション対象のログと同じディレクトリにローテーションしたログを格納
olddir ディレクトリ名
指定したディレクトリ内にローテーションしたログを格納
dateext
日付型をファイル末尾に付与する
dateformat
末尾に付与する日付フォーマットの変更(デフォルト:-%Y%m%d)

ローテート後のファイルの圧縮に関わるキーワード

nocompress
ローテーションしたログを圧縮しない
compress
ローテーションしたログをgzipで圧縮
delaycompress
ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定。
この指定がないと圧縮中にログの追記があった場合にエラーが発生する

使いそうなパターン例

/path/to/logfile1,
/path/to/logfile2,
/path/to/logfile_error*
{
    daily
    rotate 365
    create 644 [サービス実行ユーザー] [サービス実行グループ]
    dateext
    dateformat -%Y%m%d
    compress
    delaycompress

    olddir /path/to/archives
    su [ローテーション実行ユーザー] [ローテーション実行グループ] 

    ifempty
    missingok
}

コメント