是否有一种规范的方法来找出上次yum update
在系统上运行的时间?
我们的设置是我们有运行自动更新的暂存服务器,如果它们没有崩溃,我们将大约每月一次手动更新我们的生产服务器(关键更新除外)。(我说手动,理想情况下我想手动触发所有更新,但这是另一个问题)。
但是你会很忙,任务会打滑等等。所以我想设置一个 nagios 检查,如果我们离开它太久,它就会开始困扰我们。
搜索网络并没有让我走得太远。探索系统,到目前为止我发现的最好的东西是这样的:
grep Updated /var/log/yum.log | tail -1 | cut -d' ' -f 1-2
这给了我类似的东西Mar 12
,然后我可以将其转换为日期。关于日期是今年还是去年有一些小的并发症,我还需要检查/var/log/yum.log.1
以防在 logrotate 后立即检查。但这只是脚本细节。
这当然可以通过对单个包的更新而不是一般更新来“愚弄”。
那么是否有更规范的方式来查看何时yum update
运行?
编辑:我现在已经编写了一个 Nagios NRPE 插件,它使用了我在问题中提出的想法。您可以从https://github.com/aptivate/check_yum_last_update获取它
yum history 选项允许用户查看过去交易中发生的事情。为了使它更简单,你可以从yum 历史中 grep更新
我认为您可以绝对确定的唯一方法是运行
psacct
.这将允许您运行
lastcomm yum
. 如果你解析它,你就会知道是谁在什么时候运行的。我猜您是将一组“Dev”服务器指向 Dev yum 存储库?
您可以在 cron/puppet/chef 脚本中进行自动升级,该脚本在成功后写入文件。(说
/etc/yum_last
)然后你可以
yum check-update
在开发服务器上定期使用 cron/other 来查看是否有可用的更新。如果此命令显示 > 0 个更新可用,则将当前日期与上次执行自动 yum 升级时创建的文件的时间戳进行比较。如果此日期差异以天为单位增长,您可以让 Nagios 发出警报。
如果Pulp符合您的需要,您也可以查看它。
以下命令列出最近安装或更新的 RPM 包:
它也可能包括安装在 YUM 之外的包。此命令也可以在没有 root 权限的情况下运行。
您可以使用以下语句以 root 权限直接从 Yum History SQLite DB 查询此信息:
SELECT datetime( max(dt_end), 'unixepoch', 'localtime') FROM trans WHERE cmdline LIKE '%update%'
要查询的 SQLite 文件有 2 个可能的位置:
/var/lib/dnf/history.sqlite
/var/lib/yum/history.sqlite
示例: https ://bigfix.me/relevance/details/3022966
相关: https ://unix.stackexchange.com/questions/224627/find-last-time-yum-update-was-run