서버 목록이 마지막으로 완전히 업데이트된 시기를 알아내기 위한 스크립트가 작성 중입니다 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 외부에 설치된 패키지도 포함될 수 있습니다. 이 명령은 루트 권한 없이도 실행할 수 있습니다.
[편집] 내 스크립트를 사용해 볼 수 있습니다https://github.com/seffparker/nagios-plugins/blob/master/check_pkg
답변4
다음 명령문을 사용하여 루트 권한으로 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://serverfault.com/questions/389650/how-to-check-when-yum-update-was-last-run