rpm -qa --last是线上主机软件变更审计最轻量可靠方式,按安装/升级时间倒序列出所有rpm包,最新条目即最近变更,可结合时间过滤、版本比对、日志串联精准定位故障根因。

直接用 rpm -qa --last 是线上主机做软件变更审计最轻量、最可靠的方式之一,尤其适合快速定位故障发生前的安装或升级动作。
识别最近变更的关键包
执行命令后,系统按安装/升级时间倒序列出所有 RPM 包,最新一条就是最近一次变更。重点关注:
- 内核相关包(如
kernel-core、kernel-modules)—— 升级后通常需重启,若未重启却出现异常,可能与此有关 - 运行时依赖(如
glibc、openssl、python3)—— 小版本升级可能引发兼容性问题 - 业务强关联包(如
nginx、mysql-community-server、java-17-openjdk)—— 直接影响服务行为 - 安全更新包(包名含
security或版本号突增,如curl-7.76.1-22.el8_10.1)—— 补丁引入的副作用常被忽略
结合时间窗口缩小排查范围
假设故障发生在 2026-05-25 14:20 左右,可过滤出该时间点前后 24 小时内的安装记录:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
rpm -qa --last | awk -v t="2026-05-25" '$0 ~ t {print; getline; print; next} $0 ~ /2026-05-24.*1[4-9]:|2026-05-25.*[0-1][0-9]:/ {print}'
注意:输出中的时间是本地时区,需确认系统 timedatectl status 中的时区设置是否与运维日志一致,避免因时区偏差误判。
区分“安装”和“升级”,看实质变更
rpm -qa --last 记录的是最后一次操作时间,不区分初装或覆盖升级。要判断是否为实质性变更,可进一步检查:
- 对比前后版本:
rpm -q --changelog nginx | head -n 20查看变更说明,确认是否含关键修复或行为调整 - 检查文件修改时间:
rpm -ql nginx | xargs stat -c "%y %n" 2>/dev/null | head -n 5看主程序或配置模板是否有近期写入 - 验证是否触发了 systemd 重载:
journalctl --since "2026-05-25 14:00" -u nginx | grep -i "reload\|restart"
补全日志链路,避免断点
RPM 时间戳只是起点。完整审计还需串联其他日志:
-
/var/log/yum.log:记录每次yum install/update的完整命令、参数及事务 ID,可反查具体操作人(若启用sudo日志) -
last -x | grep shutdown或last reboot:确认变更后是否发生过重启,排除未生效的内核或驱动更新 -
ausearch -m avc -ts recent(如 SELinux 启用):检查变更后是否触发策略拒绝,这类故障常表现为服务启动失败但无明显报错










