logrotate 工作但忽略大小

Sru*_*uli 7 logrotate

  • CentOS v.7
  • Logrotate v.3.8.6

我将 logrotate 设置为在文件达到 5M 时旋转,但它忽略了它,如果我每天添加它将每天旋转而不管大小,我尝试使用 size、minsize 和 maxsize 都是一样的,唯一的区别是“大小”它甚至没有提到它在输出中,这是我的配置和 logrotate -vdf /etc/logrotate.d/maillog 的输出

(运行以下测试时的实际日志文件大小为 45K)

(所有测试的 conf 文件都相同,只是更改了大小参数)

/var/log/maillog {
    size 5M
    rotate 50
    create 644 root root
    dateext
    dateformat -%Y-%m-%d_%H_%s
    notifempty
    postrotate  systemctl restart rsyslog
        systemctl restart postfix
    endscript }
Run Code Online (Sandbox Code Playgroud)

尺寸:

logrotate -vdf /etc/logrotate.d/maillog

reading config file /etc/logrotate.d/maillog
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/maillog  forced from command line (50 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/maillog
  log needs rotating
rotating log /var/log/maillog, log->rotateCount is 50
Converted ' -%Y-%m-%d_%H_%s' -> '-%Y-%m-%d_%H_%s'
dateext suffix '-2017-12-19_13_1513689486'
glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
fscreate context set to unconfined_u:object_r:var_log_t:s0
renaming /var/log/maillog to /var/log/maillog-2017-12-19_13_1513689486
creating new /var/log/maillog mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/maillog: "
    systemctl restart rsyslog
    systemctl restart postfix
"
Run Code Online (Sandbox Code Playgroud)

没有给出“日志需要轮换”的理由。

最小:

logrotate -vdf /etc/logrotate.d/maillog

reading config file /etc/logrotate.d/maillog
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/maillog  forced from command line (50 rotations)
empty log files are not rotated, only log files >= 5242880 bytes are rotated, old logs are removed
considering log /var/log/maillog
  log needs rotating
rotating log /var/log/maillog, log->rotateCount is 50
Converted ' -%Y-%m-%d_%H_%s' -> '-%Y-%m-%d_%H_%s'
dateext suffix '-2017-12-19_13_1513689869'
glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
fscreate context set to unconfined_u:object_r:var_log_t:s0
renaming /var/log/maillog to /var/log/maillog-2017-12-19_13_1513689869
creating new /var/log/maillog mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/maillog: "
    systemctl restart rsyslog
    systemctl restart postfix
"
Run Code Online (Sandbox Code Playgroud)

这里显示,“只有日志文件 >= 被轮换”,但没有给出“日志需要轮换”的理由。

最大尺寸:

reading config file /etc/logrotate.d/maillog
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/maillog  forced from command line (50 rotations)
empty log files are not rotated, log files >= 5242880 are rotated earlier, old logs are removed
considering log /var/log/maillog
  log needs rotating
rotating log /var/log/maillog, log->rotateCount is 50
Converted ' -%Y-%m-%d_%H_%s' -> '-%Y-%m-%d_%H_%s'
dateext suffix '-2017-12-19_13_1513690859'
glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
fscreate context set to unconfined_u:object_r:var_log_t:s0
renaming /var/log/maillog to /var/log/maillog-2017-12-19_13_1513690859
creating new /var/log/maillog mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/maillog: "
    systemctl restart rsyslog
    systemctl restart postfix
"
Run Code Online (Sandbox Code Playgroud)

这里显示,“日志文件 => 已轮换”,但没有给出“日志需要轮换”的理由。

为什么在旋转时忽略文件大小?

par*_*tle 6

您正在使用 -f 运行 logrotate,在这种情况下,它总是会在完全不考虑其他选项的情况下强制旋转:

https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html

-f, --force 告诉 logrotate 强制旋转,即使它认为没有必要。

它没有给你任何理由,因为你实际上是理由的提供者。

  • 哦,讽刺的是,看到这个问题的赞成票多于答案。@Sruli:这应该被赞成! (2认同)