仅使用 logrotate 删除文件

仅使用 logrotate 删除文件

我有一个应用程序每小时轮换自己的日志文件。每个小时我都想删除所有超过n几天的文件。logrotate由于商业政策,我不得不这样做。

logrotate那么每小时运行这个命令相当于什么?

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

答案1

logrotate每天运行一次,可以在此处找到该脚本/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 ?

如果 count 为 0,则旧版本将被删除而不是轮换。 (来源:男人)

相关内容