minsize size
Log files are rotated when they grow bigger than size bytes,
but not before the additionally specified time interval (daily,
weekly, monthly, or yearly). The related size option is simi-
lar except that it is mutually exclusive with the time interval
options, and it causes log files to be rotated without regard
for the last rotation time. When minsize is used, both the
size and timestamp of a log file are considered.
size size
Log files are rotated only if they grow bigger then size bytes.
If size is followed by k, the size is assumed to be in kilo-
bytes. If the M is used, the size is in megabytes, and if G is
used, the size is in gigabytes. So size 100, size 100k, size
100M and size 100G are all valid.
maxsize size
Log files are rotated when they grow bigger than size bytes even before
the additionally specified time interval (daily, weekly, monthly,
or yearly). The related size option is similar except that it
is mutually exclusive with the time interval options, and it causes
log files to be rotated without regard for the last rotation time.
When maxsize is used, both the size and timestamp of a log file are
considered.
3条答案
按热度按时间af7jpaap1#
正如Zeeshan所提到的,logrotate选项
size
、minsize
、maxsize
是旋转的触发器。为了更好地解释它。你可以经常运行logrotate,但是除非达到了一个阈值,比如达到了文件大小或者经过了适当的时间,否则日志将不会被轮转。
大小选项不能确保循环日志也具有指定的大小。要使它们接近指定的大小,您需要足够频繁地调用logrotate程序。这一点很重要。
对于快速生成的日志文件(例如,每天数百MB),除非您希望它们非常大,否则您需要确保经常调用logrotate!这一点非常重要。
因此,为了防止磁盘被数GB的日志文件填满,您需要确保足够频繁地调用logrotate,否则日志轮转将无法像您希望的那样工作。
在Ubuntu上,通过将脚本
/etc/cron.daily/logrotate
移动到/etc/cron.hourly/logrotate
,可以轻松地切换到每小时轮换或添加
到你的/etc/crontab文件。每5分钟运行一次。
size
选项忽略了daily,weekly,monthly时间选项。但是minsize和maxsize会将其考虑在内。手册页有点混乱。下面是我的解释。
***
minsize
仅在文件达到适当大小且超过设置的时间段后才会循环。***例如,最小大小50 MB+每日如果文件在每日时间结束前达到50 MB,则会一直增长到第二天。***
maxsize
将在日志达到设定大小或经过适当时间后进行轮转。***例如,maxsize 50 MB + daily。如果文件大小为50 MB,并且我们还没有到达第二天,则日志将进行轮转。如果文件只有20 MB,并且我们将滚动到第二天,则文件将进行轮转。***
size
将在日志〉size时进行轮转。无论是否指定了hourly/daily/weekly/monthly。***因此,如果您的大小为100 M-这意味着当您的日志文件〉100 M时,如果在此条件为真时运行logrotate,则日志将进行轮转。一旦轮转,主日志将为0,并且后续运行将不执行任何操作。因此,在操作的情况下。具体来说,最大50 MB,我将使用如下内容:
这意味着他最多可以创建8个小时的日志。其中有8个日志,每个日志的大小不超过50 MB。由于他说他每天会得到数GB的日志,并且假设这些日志以相当恒定的速度增长,并且使用了maxsize,因此他最终得到的每个文件的大小将接近最大值。因此,每个文件的大小可能接近50 MB。考虑到这些日志所构建的卷,他将需要确保logrotate足够频繁地运行以满足目标大小。
由于我在这里设置了hourly,我们需要至少每小时运行一次logrotate。但是由于它们每天累积2GB,而我们需要50 MB......假设恒定速率为每小时83 MB。所以你可以想象,如果我们每小时运行一次logrotate,尽管将maxsize设置为50,但在这种情况下,我们最终会得到83 MB的日志。因此,在这种情况下,将运行时间设置为每20分钟或更短时间就足够了。
确保每20分钟运行一次logrotate。在这种情况下,在20分钟内日志文件可能小于50 MB,但在40分钟内,超过50 MB的日志文件将自动更新。如果我们每30分钟更新一次,则在30分钟内日志文件将小于50 MB(无旋转),在1小时内,它可能已经建立到〉80 MB,在这种情况下,文件将被旋转,但比我们预期的要大得多。因此,请确保将旋转时间考虑在内。
jhdbpxl92#
它指定要触发自动重建的**日志档 * a大小。例如,一旦档案大小为50MB或更大,
size 50M
就会触发日志自动重建。您可以使用后缀M
代表MB,k
代表KB,而G
代表GB。如果未使用后缀,它将表示字节。您可以查看最后的示例。有三个可用指令size
、maxsize
和minsize
。根据manpage:下面是一个示例:
下面是对文件
/var/log/httpd/access.log
和/var/log/httpd/error.log
的解释。(未压缩)转换为www@my.org
,而不是删除。sharedscripts
表示postrotate
脚本将只运行一次(在压缩旧日志后),而不是对每个轮转的日志引用一次。请注意,此部分开头的第一个文件名两边的双引号允许logrotate轮转名称中带有空格的日志。适用普通的shell引用规则,支持,
和\
字符。j9per5c43#
为了进一步简化说明:
Logrotate大小参数仅在运行logrotate时应用。
例如,如果你设置logrotate每小时运行一次,当文件大小达到5 MB时,如果文件在一个小时之前就超过了5 MB,那么文件实际上会增长到大于5 MB,因为logrotate从来没有在文件上调用过。
必须经常在文件上运行logrotate以检查其大小。因此,当在logrotate中使用size参数时,只需让logrotate的计时由其他东西来处理即可。(例如cron/script)。这意味着您可以在logrotate配置中省略指定时间。
例如,如果我想旋转一个大小为5 MB的文件-该文件达到该大小的速度将决定logrotate应该运行的频率。假设平均需要10分钟才能达到5 MB,首先,旋转设置最低为:
创建目录
/etc/custom-rotate.d
将上述内容保存在
/etc/custom-rotate.d/customlog
中使用权限:
sudo chmod 644 /etc/custom-rotate.d/customlog
创建配置文件:
权限:
sudo chmod 644 /etc/custom-rotate.conf
然后每隔5分钟运行一次cron(为可能的异常留出空间)来检查大小。
第一个
新增项目:
重新加载cron:
因此,logrotate将每5分钟运行一次,如果大小大于5 M,它将旋转日志。