如何检查 yum update 上次运行的时间

如何检查 yum update 上次运行的时间

是否有一种规范的方法来找出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

相关内容