正如我所提到的Zeeshan,logrotate选项size
,minsize
,maxsize
是旋转的触发器。
为了更好地解释它。您可以随心所欲地运行logrotate,但除非达到阈值(例如正在达到的文件大小或经过适当的时间),否则日志将不会旋转。
大小选项不能确保您的旋转日志也是指定的大小。为了使它们接近指定的大小,你需要经常调用logrotate程序。这很关键。
对于构建速度非常快(例如每天数百MB)的日志文件,除非您希望它们非常大,否则需要确保经常调用logrotate!这很关键。
因此,要停止使用多千兆字节日志文件填充磁盘,您需要确保足够频繁地调用logrotate,否则日志轮换将无法正常工作。
在Ubuntu,你可以方便地切换到每小时旋转通过移动脚本/etc/cron.daily/logrotate到/etc/cron.hourly/logrotate
或者添加
*/5 * * * * /etc/cron.daily/logrotate
要将/ etc/crontab文件。每5分钟运行一次。
size
选项忽略每日,每周,每月的时间选项。但最大尺寸&考虑到它。
手册页有点混淆。这是我的解释。
minsize
仅当文件达到适当的大小并且经过了设定的时间段时才旋转。例如每日最大容量为50MB + 如果文件在日常时间点击之前达到50MB,则会在第二天持续增长。
maxsize
将在日志达到设定大小或经过适当的时间时进行旋转。 例如最大限度每天50MB +。 如果文件是50MB,我们还没有在第二天,日志将被旋转。如果文件只有20MB,并且我们转到第二天,那么文件将被旋转。
size
当log> size时会旋转。无论是否指定小时/每日/每周/每月。因此,如果您的大小为100M - 这意味着当您的日志文件大于100M时,如果在此条件为真时运行logrotate,则日志将被旋转。旋转后,主日志将为0,随后的运行将不会执行任何操作。
所以在op的情况下。特别是50MB最多我会使用类似如下:
/var/log/logpath/*.log {
maxsize 50M
hourly
missingok
rotate 8
compress
notifempty
nocreate
}
这意味着他会创建8小时的日志最大。其中有8个每个不超过50MB。由于他说他每天得到几千兆字节,并且假设他们以相当恒定的速率建立,并且使用了最大化,他将以接近每个文件达到的最大值为结束。所以它们每个可能接近50MB。鉴于他们建立的数量,他需要确保logrotate的运行频率足以达到目标规模。
由于我已经把时间放在那里,我们需要logrotate每小时至少运行一次。但是,由于他们每天要创建2GB的数据,并且我们需要50MB ...假设每小时83MB的恒定速率。所以你可以想象,如果我们每小时运行一次logrotate,尽管将maxsize设置为50,那么在这种情况下,我们最终会得到83MB的日志。所以在这种情况下,每运行30分钟或更少时间就足够了。
确保logrotate每30分钟运行一次。
*/30 * * * * /etc/cron.daily/logrotate
不错。一个小纸条,我发现maxsize和minsize在旧发行版中不能很好地工作(比如centos5和ubuntu 10.10 ...后者是EOL)。 – tobixen