银河麒麟系统需手动配置rsyslog的logrotate机制并添加状态检查逻辑,否则日志持续增长致磁盘满且无法获知归档是否成功;须先启用rsyslog服务,再配置/etc/logrotate.d/rsyslog轮转参数,配合sharedscripts与postrotate实现HUP重载,并按需选择桌面通知、日志记录或时间戳文件三种提示方式。

银河麒麟系统默认不启用日志自动归档提示功能,需手动配置rsyslog的logrotate机制并添加状态检查逻辑,否则日志文件会持续增长直至填满磁盘,运维人员无法及时获知归档动作是否成功执行。
确认rsyslog服务已启用并运行
执行 systemctl status rsyslog 查看服务状态。若显示 inactive (dead),则必须先启动服务,否则后续所有归档配置均无效。
启动并设为开机自启:sudo systemctl start rsyslog && sudo systemctl enable rsyslog。
配置logrotate实现日志自动轮转
银河麒麟V10默认已安装logrotate,但/etc/logrotate.d/rsyslog 文件可能为空或缺失关键参数。
用编辑器打开该文件:sudo nano /etc/logrotate.d/rsyslog。
写入以下内容(注意替换/var/log/messages为实际主日志路径,可通过rsyslogd -N1验证):
/var/log/messages {<br> daily<br> missingok<br> rotate 7<br> compress<br> delaycompress<br> notifempty<br> create 644 syslog syslog<br> sharedscripts<br> postrotate<br> /usr/bin/systemctl kill --signal=SIGHUP rsyslog.service > /dev/null 2>&1 || true<br> endscript<br>}
【sharedscripts 和 postrotate 必须成对出现】,否则日志轮转后rsyslog不会重新加载配置,新日志仍会写入旧文件。
添加归档完成提示机制
方法一:通过cron触发归档后发送桌面通知(适用于图形化环境)
编辑当前用户crontab:crontab -e,添加一行:
0 2 * * * /usr/bin/logrotate -s /var/lib/logrotate/status /etc/logrotate.d/rsyslog && /usr/bin/notify-send "日志归档完成" "$(date +'%Y-%m-%d %H:%M') 已完成轮转,保留最近7天记录"
方法二:写入系统日志并触发邮件告警(适用于服务器环境)
在postrotate段末尾插入:
logger -t logrotate "rsyslog daily rotation completed at $(date +'%Y-%m-%d %H:%M:%S')"
确保/etc/rsyslog.d/50-default.conf中包含*.* @localhost:514或本地转发规则,使logger输出可被采集。
方法三:生成时间戳文件供监控脚本读取(推荐用于等保审计场景)
在postrotate内追加:
touch /var/log/.last_rotation_$(date +\%Y\%m\%d_\%H\%M)
这一步会在每次归档后创建唯一命名的空文件,便于外部巡检脚本用ls -t /var/log/.last_rotation_* | head -1判断最新归档时间。
手动触发一次归档并验证提示效果
运行:sudo logrotate -f /etc/logrotate.d/rsyslog 强制执行一次轮转。
检查/var/log/messages.1是否存在,确认压缩文件生成成功。
若使用方法一,观察桌面右上角是否弹出通知;若使用方法二,执行journalctl -t logrotate -n 5查看日志条目;若使用方法三,执行ls -t /var/log/.last_rotation_* | head -1确认最新时间戳文件已生成。











