1、删除 /etc/logrotate.d/rsyslog 文件中 /usr/bin/killall -HUP rsyslogd,避免messages日志对auth.log的影响
2、另一台机器 ssh 该系统,该行为会触发系统内auth.log的记录
3、执行命令进行手动日志轮转
logrotate -vf /etc/logrotate.conf
4、执行命令ps -elf | grep rsyslog; lsof -p {PID} | grep var,可见rsyslog一直在操作已删除的文件。
该问题原因为 logrotate 操作轮转切割日志 /var/log/auth.log文件后,rsyslog 进程打开切割前日志文件 /var/log/auth.log没有被关闭,使用lsof 能够查看到 /var/log/auth.log (deleted)文件被占用状态,资源没有被释放。
解决该问题需要每次日志切割轮转后向 rsyslog.service发送HUP信号重新加载配置,命令为 /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true,保证轮转切割日志后,可以及时释放资源,避免出现上述问题。
升级rsyslog软件包至rsyslog-8.1907.0-5.p02.ky10以上版本
# yum update rsyslog
重新加载服务配置文件
# systemctl daemon-reload
确认服务状态正常
# systemctl status rsyslog