【问题标题】:logrotate working but ignoring sizelogrotate 工作但忽略大小
【发布时间】:2018-06-01 23:26:19
【问题描述】:
  • CentOS v.7
  • Lo​​grotate 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 }

尺寸:

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
"

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

最小化:

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
"

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

最大尺寸:

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
"

这里显示“日志文件 => 已旋转”,但没有给出“日志需要旋转”的原因。

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

【问题讨论】:

    标签: logrotate


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哦,讽刺的是,这个问题得到的支持比答案还多。 @Sruli:这应该被赞成!
    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多