TECH

logrotateのテスト、別日のファイル作って動作確認

投稿日:

 

logrotateの動作確認に何日も待ってログが出力されているか確認するのはめんどうくさい。

そんなときは以下の方法。

 

まず前提として、logrotate は /var/lib/logrotate/logrotate.status の日時を見て動作します。

そのため、その日に作成したlogrotateのファイルを実行しても、実行できないということが起きます。

これを回避するためにあの手この手でテストをやりました。参考にどうぞ。

 

環境

CentOS7 (EC2)

 

logrotate.status の編集

まずlogrotate.statusを編集しましょう。

以下の例では [ 1/10 ] のステータスを [ 1/9 ] にしています(実行日:1/10)。

sed -i -e 's/1-10/1-9/g' /var/lib/logrotate/logrotate.status

すでにログファイルが残っている場合はテストのためリネームするか全部削除しましょう。

rename 0110 0109 /var/log/foo/*

変更できたかチェックします。

cat /var/lib/logrotate/logrotate.status

 

/etc/crontab の編集

crontabを数分後に実行できるよう編集します。

編集が終わったら再起動してください。

vi /etc/crontab
systemctl restart crond

cronが実行されたら、再度確認

cat /var/lib/logrotate/logrotate.status

ファイルができているか確認

ll /var/log/foo

 

タイムスタンプを編集

作成されたファイルの末尾を1日前にします。

rename 0110 0109 /var/log/foo/*

先ほど末尾を変更したファイルのタイムスタンプを変更します。

cd /var/log/foo
touch -t 01090500 *0109

 

再度 /etc/crontab の編集

vi /etc/crontab
systemctl restart crond

編集し終わったら、logrotate.status の日付を再度編集します。

sed -i -e 's/1-10/1-9/g' /var/lib/logrotate/logrotate.status

 

必要な日数分のファイルを作る

3-4の手順を繰り返し必要な分だけファイルを作ります。

あとはテストに合わせて条件変えて挙動を確認してください。

 

以上です。

 

-TECH
-

Copyright© 紳士は変態がお好き , 2020 All Rights Reserved.