logrotate(copytruncate)した後のファイルをfindする場合の注意点
何があったか
ログのローテートを行ったあと、ログの転送を行うファイルを絞り込むためにfind
コマンドに-mtime
オプションを付けて使用していた。
そして、とある事情によって、logrotate
のオプションからcopytruncate
を取り除いたことによってファイルを想定通りに絞り込めなくなったという現象が発生した。
どう解決したか
-mtime
ではなく-ctime
を使う(-mmin
も同様で、-cmin
に置き換える)
なぜ?
coprytruncate
によって作られるファイルは最終内容更新日時がログローテート実行時の日時になる。
反対に上記のオプションがない場合は、ソースとなるファイルの最終内容更新日時が引き継がれる。
ログローテートの実行ログにもrenaming /tmp/log/httpd/access_log to /tmp/log/httpd/access_log.1
と出力されるように、リネームが行われているからだった。
参考URL
https://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html
※用語は上記ページに合わせました
備考
ちなみにcopytruncate
の有無にかかわらず、最終ステータス変更日時はログローテート実行時の日時になるので、-ctime
や-cmin
を使ったほうが安全な気がする。
Author And Source
この問題について(logrotate(copytruncate)した後のファイルをfindする場合の注意点), 我々は、より多くの情報をここで見つけました https://qiita.com/ns_k/items/15dfca653d5bab0f6063著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .