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