logrotateを使用してファイルのみを削除する

logrotateを使用してファイルのみを削除する

毎時間独自のログファイルを回転させるアプリケーションがあります。毎時間n数日を過ぎたすべてのファイルを削除したいと思います。logrotate事業政策のためにこうしなければなりませんでした。

logrotateそれでは、時間ごとにこのコマンドを実行するのと同じことは何ですか?

find /var/log/app -name "*.old" -mtime +1 -exec rm -f {} \;

答え1

logrotate1日1回実行されます。スクリプトはここ/etc/cron.daily/logrotate(CentOS 7)にあります。毎時間実行するには、まずに移動する必要があります/etc/cron.hourly/。したがって、上記のコマンドの場合、対応するlogrotateスクリプトは次のようになります。

$ cat /etc/logrotate.d/app

/var/log/app/*.old {
  hourly
  rotate 0
  firstaction
    /usr/bin/find /var/log/app/ -name "*.old" -mtime +1 -delete
  endscript
  nocreate
  missingok
  notifempty
}

答え2

テストする必要がある可能性は次のとおりです。

cat /etc/logrotate.d/customapp

/var/log/app/*.old {
    daily
    missingok
    rotate 0
    notifempty
}

なぜゼロを回転させるのですか?

カウントが0の場合、以前のバージョンは回転せずに削除されます。 (出典:男)

関連情報