大小规则在 logrotate 中不起作用

Ron*_*aby 3 linux ubuntu logrotate

我为我们的 docker 日志创建了一个 log-rotate 选项,它工作正常。这是配置文件

*root@aerogear:/var/lib/docker/containers/b8da13f8dc6cb642959103c23db2a02ef2c7291ae5f94625a92ac9329db1647e# cat /etc/logrotate.d/docker-container
/var/lib/docker/containers/*/*.log {
  rotate 7
  hourly
  compress
  size=100M
  missingok
  delaycompress
  copytruncate
}*
Run Code Online (Sandbox Code Playgroud)

看来每小时 logrotate 工作正常。但由于一些错误,该日志文件增加到了 18G,因为该size=100M规则在这种情况下不起作用。您知道其中的具体原因吗?

Ron*_*eau 6

  • 后面不应该有等号size
  • 如果您想每小时轮换一次并且当文件变得大于 时轮换100M,那么您应该使用maxsize而不是size

所以你应该尝试maxsize 100M而不是size=100M.


Ale*_*lke 6

正如罗南所说,sizehourly是“矛盾的”。可以使用其中之一,但很可能其中一个具有优先权,因此您需要maxsize改为使用。

下一个:

通常,logrotate 作为日常 cron 作业运行。它不会在一天内多次修改日志,除非该日志的标准基于日志的大小并且 logrotate 每天运行多次,或者除非使用-f或选项。--force

(来自 logrotate 手册页)

在标准 Ubuntu 安装上,logrotate每天运行一次。如果你查看 cron 安装,你会在目录logrotate下看到cron.daily

prompt$ ls -l /var/cron.daily
...
-rwxr-xr-x 1 root root  372 May  6  2015 logrotate
...
Run Code Online (Sandbox Code Playgroud)

并且下面没有任何内容cron.hourly

prompt$ ls -l /var/cron.hourly
(nothing)
Run Code Online (Sandbox Code Playgroud)

这表明hourly设置不会比默认设置上的设置logrotate做出更多响应。daily当然,您可以更改它并logrotate每小时运行一次甚至每分钟运行一次(在最后一种情况下,您需要一个 crontab root)。但默认情况下,maxsize带有hourlydaily设置的文件没有用,因为无论大小如何,文件每次都会旋转。

还有一些版本的logrotate参数maxsize不起作用。在新版本中这不应该是问题。

正如罗南提到的,=选项和价值之间没有任何符号。