Dawson Smith Asked: 2022-01-06 23:23:03 +0800 CST2022-01-06 23:23:03 +0800 CST 2022-01-06 23:23:03 +0800 CST 如果在 logrotate 的情况下定义了 size 参数,ifempty 和 notifempty 如何工作? 772 假设我有这样的 logrotate 命令 /a/b/file.log{ size 5M ifempty } 现在 logrotate 在大小应大于 5MB 的条件下工作,然后 logrotate 将开始为该文件工作。但是在这种情况下 ifempty 将如何工作?在这种情况下,优先级是什么?那notifempty的情况呢? linux logrotate 1 个回答 Voted Best Answer Stephen Kitt 2022-01-07T00:18:07+08:002022-01-07T00:18:07+08:00 在此设置中: size 5M指示logrotate仅在日志文件大于 5MB 时轮换日志文件; ifemptylogrotate即使日志文件为空也会发出指示(默认情况下启用)。 这些指令可能会出现冲突:第一个指令将排除 0 字节文件,但第二个指令将包含该文件。 在实践中发生的情况是ifempty对文件选择没有明确的影响;重要的“空”设置与之相反,notifempty如果日志文件为空,则在所有情况下都禁用轮换。ifempty存在,以便在notifempty全局设置时可以为特定配置恢复默认行为。 另一种思考方式是ifempty/notifempty不选择文件,它们仅确定在应用了所有其他条件后考虑轮换空日志文件时会发生什么。如果ifempty设置(同样,这是默认设置),空日志文件会被轮换;如果notifempty已设置,则不是。 根据您的配置,只有大于 5MB 的日志文件才会轮换。
在此设置中:
size 5M
指示logrotate
仅在日志文件大于 5MB 时轮换日志文件;ifempty
logrotate
即使日志文件为空也会发出指示(默认情况下启用)。这些指令可能会出现冲突:第一个指令将排除 0 字节文件,但第二个指令将包含该文件。
在实践中发生的情况是
ifempty
对文件选择没有明确的影响;重要的“空”设置与之相反,notifempty
如果日志文件为空,则在所有情况下都禁用轮换。ifempty
存在,以便在notifempty
全局设置时可以为特定配置恢复默认行为。另一种思考方式是
ifempty
/notifempty
不选择文件,它们仅确定在应用了所有其他条件后考虑轮换空日志文件时会发生什么。如果ifempty
设置(同样,这是默认设置),空日志文件会被轮换;如果notifempty
已设置,则不是。根据您的配置,只有大于 5MB 的日志文件才会轮换。