是否有一种规范的方法来找出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
答案1
yum history 选项允许用户查看过去交易中发生的事情。为了更简单,你可以使用 grep更新从yum 历史
# yum history
Loaded plugins: fastestmirror, refresh-packagekit
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
41 | root <root> | 2012-04-27 20:17 | Install | 19
40 | root <root> | 2011-11-20 10:09 | Install | 10
39 | root <root> | 2011-11-20 08:14 | Install | 1 E<
38 | root <root> | 2011-11-19 15:46 | Update | 1
答案2
我认为唯一可以绝对确定的方法就是跑步psacct
。
这将允许您运行lastcomm yum
。如果您解析它,您将知道谁在何时运行了它。
答案3
我猜您正在将一组“Dev”服务器指向 Dev yum repo?
您可以在 cron/puppet/chef 脚本中进行自动升级,成功后将写入文件。(例如/etc/yum_last
)
然后,您可以yum check-update
在开发服务器上的 cron/other 中定期使用,查看是否有任何更新可用。如果此命令显示可用更新数 > 0,则将当前日期与您上次执行自动 yum 升级时创建的文件的时间戳进行比较。
如果这个日期差异在几天内增加,您可以让 Nagios 发出警报。
您还可以查看纸浆如果它符合您的需要。
答案4
您可以使用以下语句以 root 权限直接从 Yum History SQLite DB 查询此信息:
SELECT datetime( max(dt_end), 'unixepoch', 'localtime') FROM trans WHERE cmdline LIKE '%update%'
要查询的 SQLite 文件有两个可能的位置:
/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