
サーバーのリストが最後に完全に更新された時期を見つけるためのスクリプトが作成されています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