查找上次运行yum更新的时间


13

我正在构建一个脚本来查找服务器列表上次完全更新的时间yum update

我可以通过找到它,history |grep "yum update"|head -n 1但是问题是用户可以将其启动,但没有在提示符下键入“ y”。

我尝试的另一种方法是 yum history

ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
   109 | <xyz user>              | 2015-08-20 07:18 | Erase          |   1 E<
   108 | root <root>              | 2015-08-18 08:56 | Update         |    3 >
   107 | root <root>              | 2015-08-14 07:39 | Update         |    1
   106 | root <root>              | 2015-08-14 07:38 | Update         |    1
   105 | root <root>              | 2015-08-14 07:38 | Update         |    3
   104 | root <root>              | 2015-08-13 07:31 | Update         |    1
   103 | root <root>              | 2015-08-11 05:46 | Update         |    1
   102 | root <root>              | 2015-08-11 05:46 | Update         |    2
   101 | root <root>              | 2015-08-11 05:45 | Update         |    3
   100 | root <root>              | 2015-08-11 05:45 | Update         |    3
    99 | root <root>              | 2015-08-10 20:41 | Update         |    1
    98 | root <root>              | 2015-08-05 02:35 | Update         |    1
    97 | root <root>              | 2015-05-14 10:52 | Update         |    1
    96 | root <root>              | 2015-05-01 02:59 | Obsoleting     |    2
    95 | root <root>              | 2015-04-09 16:06 | Update         |    1  <
    94 | <xyz.user>            | 2015-03-28 08:49 | Update         |    1 ><
    93 | <xyz.usert>            | 2015-03-28 08:14 | Erase          |    3 ><
    92 | <xyz.user>            | 2015-03-13 07:46 | Install        |    6 ><
    91 | <xyz.user>             | 2015-03-13 05:45 | I, U           |   24 >
    90 | root <root>              | 2015-03-04 01:24 | Update         |    3

但是我找不到确定yum update启动和成功日期的方法。例如,由于如果我检查标记为“更新”的事务ID 108,该事务ID在18日启动,则找不到该yum update特定日期的命令:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

我尝试过的另一条路径,/var/log/yum.logyum.log也会显示安装和更新。如果在安装软件包e:g:时yum install varnish更新了软件包,并且它需要更新某些软件包,例如:(varnish-libs-2.1.5-5.el6.i686、3.0.7-1.el6.i686等),则此将在yum.log中显示为已更新

有没有办法找到启动日期yum update和成功的日期?


1
serverfault.com/questions/389650/的重复项…… “如何检查上次运行yum更新的时间”
Steve 2015年

Answers:


15

您几乎回答了您的问题。您可以通过以下方式找到最新的5个更新的软件包:

grep Updated: /var/log/yum.log | tail -5

输出示例:

Aug 05 13:28:34 Updated: virt-manager-common-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:34 Updated: glusterfs-libs-3.5.5-2.fc21.i686
Aug 05 13:28:35 Updated: virt-manager-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:36 Updated: virt-install-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:38 Updated: glusterfs-3.5.5-2.fc21.i686

1
cat被滥用(请 -10grep Updated: /var/log/yum.log | tail
参阅The Catless

1
你绝对是个好人!但这是养成所有东西的习惯,因为您可以选择任意数量的grep记录,所以需要10(更改为5)。这就是为什么我将数字留给grep。
obohovyk 2015年

仅显示最后5个更新的软件包。考虑下面的Senario:如果在安装软件包时更新了软件包,例如:yum install varnish,它需要更新某些软件包,例如:(varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686等),它将在yum.log中显示为已更新。而我想确切地了解何时yum update启动并成功运行,而不是最后5个更新的软件包。
Kheshav Sewnundun 2015年

您可能需要使用auditd和创建规则来执行yum。
sebelk 2015年

1
如果自从日志轮换以来未使用yum,则可能已清除yum.log。如果是这种情况,您可以通过例如/var/log/yum.log-20180101etc等grep
user8675309 '19

6

首先,您需要定义“升级”的含义。例如。仅使用较新内核进行的升级将是一次安装(并且可能会删除较旧的内核)。如果有人进行“升级foo”,那算不算?最终只是进行升级(如果没有升级)的“发行同步”呢?交易失败是否算在内?

然后停止greping输出,只会导致痛苦和折磨。

使用API​​非常简单,例如(最近一次交易开始升级任何软件包):

import yum
import time

yb = yum.YumBase()
for old in yb.history.old():
    if "Update" in (hpkg.state for hpkg in old.trans_data):
        print "Latest Update:", time.ctime(old.beg_timestamp)
        break

1

以下命令列出了最近安装或更新的RPM软件包:

rpm -qa --last  | head

它也可能包括安装在YUM外部的软件包。此命令也可以在没有root特权的情况下运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.