LoginSignup
3
2

More than 5 years have passed since last update.

logrotateで`removing old log`しようとするとエラーが出る

Last updated at Posted at 2017-04-27

概要

nginxのログファイルを調べていたら、正常にローテートできているものとそうでないものがあった。

環境

CentOS 6.5

原因

デバッグモードで動かしてみたところ、下記のエラーが出ていた。

$ logrotate -d /etc/logrotate.d/nginx
removing old log /var/log/nginx/hoge.access.log.53.gz
error: error opening /var/log/nginx/hoge.access.log.53.gz: No such file or directory

ログファイルを消そうとしているけど存在しないって言われている。

設定ファイル

/etc/logrotate.d/nginx
/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 644 maro maro
        sharedscripts
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

'missingok'は入れているが、削除しようとした場合はエラーを出すようだ。

結論

'/var/lib/logrotate.status' に、ローテートの状況が残ったままでログが手動で削除されたっぽい(誰かの手によって)。

対処法

'/var/lib/logrotate.status' このファイルを退避させて再生成したらうまく回るようになった。

備考

ログファイルのパーミッションが原因だとばかり思い込んでいた。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2