如何覆盖系统日志/var/log/secure的logrotate配置?请验证方法合理性
调整/var/log/secure日志的logrotate保留周期方案验证与优化
你的操作逻辑是完全正确的,不会出现问题:
- 从原
/etc/logrotate.d/rsyslog配置中移除/var/log/secure,避免同一日志被多个配置文件重复处理导致冲突 - 单独创建
/etc/logrotate.d/securelog配置文件,为该日志设置rotate 1(结合logrotate默认每周执行一次的调度,对应保留1份归档日志,满足缩短至1周的需求)
不过可以提供两种更优的实现方式,让配置更简洁易维护:
方式一:直接修改原rsyslog配置文件
无需新建额外配置文件,直接在/etc/logrotate.d/rsyslog中拆分配置,把/var/log/secure单独列出来设置专属参数:
/var/log/cron /var/log/maillog /var/log/messages /var/log/spooler { missingok sharedscripts postrotate /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true endscript } /var/log/secure { rotate 1 # 若要严格确保日志仅保留7天,可添加maxage参数 # maxage 7 missingok sharedscripts postrotate /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true endscript }
方式二:简化专属配置文件
如果坚持使用独立配置文件,可以省略与原配置重复的参数(logrotate会继承全局配置或默认参数),仅保留差异项:
/var/log/secure { rotate 1 # 严格控制保留天数的话加上这行 # maxage 7 sharedscripts postrotate /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true endscript }
注:
missingok属于logrotate常用默认参数,若全局配置已开启可不用重复写;但如果要确保该参数生效,也可以保留。
另外补充一个细节:rotate 1是指定保留1份归档日志,结合每周轮转的默认调度,实际会保留当前正在写入的日志+1份上周的归档。如果需要严格只保留最近7天内的日志,建议添加maxage 7参数,这样不管轮转次数,超过7天的归档文件都会被自动删除,更贴合“保留1周”的需求。
内容的提问来源于stack exchange,提问作者Rob Wilkinson
相关产品推荐
相关产品推荐

