【问题标题】:Logrotate duplicates filesLogrotate 重复文件
【发布时间】:2019-07-13 01:48:03
【问题描述】:

我有一个测试应用程序,它每小时运行一次,并在每次执行时使用唯一的日志文件。为了清理日志,设置了以下 logrotate 配置:

{
        # Daily rotation with 1 week of backlog
        daily
        rotate 7
        maxage 7
        dateext
        compress
}

日志文件压缩的​​第一天(没问题),但留下了一个空文件,并且每隔一天该文件被“清空”并压缩。这使得每个日志文件的 6 个文件填充了 FS 的 inode 表。这里有两个例子:

-rw-r--r-- 1 root root 1752 Feb 11 01:36 J20190211013601_Status.txt-20190212.gz
-rw------- 1 root root   20 Feb 12 03:33 J20190211013601_Status.txt-20190213.gz
-rw------- 1 root root   20 Feb 13 03:37 J20190211013601_Status.txt-20190214.gz
-rw------- 1 root root   20 Feb 14 03:10 J20190211013601_Status.txt-20190215.gz
-rw------- 1 root root   20 Feb 15 03:12 J20190211013601_Status.txt-20190216.gz
-rw------- 1 root root   20 Feb 16 03:36 J20190211013601_Status.txt-20190217.gz
-rw------- 1 root root   20 Feb 17 03:44 J20190211013601_Status.txt-20190218.gz
-rw------- 1 root root    0 Feb 18 03:24 J20190211013601_Status.txt

-rw-r--r-- 1 root root 1752 Feb 11 02:36 J20190211023601_Status.txt-20190212.gz
-rw------- 1 root root   20 Feb 12 03:33 J20190211023601_Status.txt-20190213.gz
-rw------- 1 root root   20 Feb 13 03:37 J20190211023601_Status.txt-20190214.gz
-rw------- 1 root root   20 Feb 14 03:10 J20190211023601_Status.txt-20190215.gz
-rw------- 1 root root   20 Feb 15 03:12 J20190211023601_Status.txt-20190216.gz
-rw------- 1 root root   20 Feb 16 03:36 J20190211023601_Status.txt-20190217.gz
-rw------- 1 root root   20 Feb 17 03:44 J20190211023601_Status.txt-20190218.gz
-rw------- 1 root root    0 Feb 18 03:24 J20190211023601_Status.txt

如何纠正这个问题,以便在压缩后删除文件

感谢您的时间和帮助,

【问题讨论】:

    标签: linux centos centos7 logrotate


    【解决方案1】:

    这就是 logrotate 的运作方式;您的问题源于您每次运行应用程序时都使用唯一文件名这一事实。

    当 logrotate 第一次在每个日志上运行时,它会将日志文件从“J20190211023601_Status.txt”移动到“J20190211023601_Status.txt-20190212.gz”,然后创建一个名为 J20190211023601_Status.txt 的新文件强>。

    Logrotate 没有固有的想法,即这些文件名是唯一的,因此永远不会再次填充;它所看到的只是它在过去轮换的日志,因此必须根据您的配置再次轮换它。

    您最简单的解决方案是为此 logrotation 传递 nocreate 指令;这将防止创建新的日志文件并随后进行轮换,同时仍遵守先前轮换文件的 7 天期限:

    {
      daily
      maxage 7
      dateext
      compress
      nocreate      
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2017-02-15
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 2012-02-16
      • 2018-03-16
      相关资源
      最近更新 更多