yumアップデートが最後に実行された時刻を探す

yumアップデートが最後に実行された時刻を探す

サーバーのリストが最後に完全に更新された時期を見つけるためのスクリプトが作成されています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ただし、リリース日と成功日を決定する方法が見つかりません。たとえば、「更新」が18日に開始されたことを示すトランザクションID 108を確認すると、yum updateその日付のコマンドが見つかりません。

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

私が試した別のパスはwithでした/var/log/yum.logが、yum.logインストールとアップデートも表示されます。パッケージのインストール時にパッケージが更新される場合:例:yum install varnish一部のパッケージを更新する必要があります。例:(varnish-libs-2.1.5-5.el6.i686、3.0.7-1.el6.i686など)として表示されます。修正するyum.logから

yum update開始して成功した日付を知る方法はありますか?

答え1

あなたの質問にほとんど答えました。以下では、最新の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

答え2

まず、「アップグレード」が何を意味するのかを定義する必要があります。例えば。最新のカーネルへのアップグレードだけを一度インストールするだけです(以前のカーネルが消去される可能性があります)。誰かが「fooをアップグレード」した場合、それは重要ですか?もしそうなら、「distro sync」がアップグレードのみを実行する場合(またはそうでなければ)どうなりますか?取引が失敗しても構いませんか?

その後、grepの出力を停止すると、痛みと苦しみだけが発生します。

たとえば、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

答え3

次のコマンドは、最近インストールされたまたは更新されたRPMパッケージを一覧表示します。

rpm -qa --last  | head

YUM の外部にインストールされたパッケージも含めることができます。このコマンドは root 権限なしで実行できます。

[編集]私のスクリプトを試すことができますhttps://github.com/seffparker/nagios-plugins/blob/master/check_pkg

答え4

次の文を使用して、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://serverfault.com/questions/389650/how-to-check-when-yum-update-was-last-run

関連情報