AIX 및 Solaris에서 커널의 마지막 업데이트 날짜를 얻는 방법

AIX 및 Solaris에서 커널의 마지막 업데이트 날짜를 얻는 방법

AIX 및 Solaris에서 커널의 마지막 업데이트 날짜를 알고 싶습니다.

Linux의 경우 명령은 다음과 같습니다.

rpm -qa --last | grep kernel-`uname -r` | sed 's/^k.*\s\s//'

이 명령에 대해 다음과 같은 결과를 얻었습니다.

Wed 29 Nov 2017 03:26:48 PM EST

AIX와 Solaris에도 동일한 대체 제품이 필요합니다.

AIX에 대해 이 명령을 실행하려고 하는데 필요한 컴플렉스에 대한 올바른 출력이 아닙니다.

lslpp -ha bos.adt.base | grep COMPLETE | sed 's/^k.*\s\s//'
Return Code: 0,                   6.1.1.0   COMMIT       COMPLETE     09/16/14     13:49:31    
                  6.1.1.0   APPLY        COMPLETE     09/16/14     13:49:31    
                 6.1.8.16   COMMIT       COMPLETE     09/16/14     13:59:18    
                 6.1.8.16   APPLY        COMPLETE     09/16/14     13:55:32    
                 6.1.9.30   COMMIT       COMPLETE     07/02/15     16:36:49    
                 6.1.9.30   APPLY        COMPLETE     07/02/15     16:33:22    
                 6.1.9.45   COMMIT       COMPLETE     09/04/15     15:45:19    
                 6.1.9.45   APPLY        COMPLETE     09/04/15     15:45:09    
                6.1.9.101   APPLY        COMPLETE     09/14/17     16:44:44    
                  6.1.1.0   COMMIT       COMPLETE     09/16/14     13:49:36    
                  6.1.1.0   APPLY        COMPLETE     09/16/14     13:49:36    
                 6.1.8.16   COMMIT       COMPLETE     09/16/14     13:59:18    
                 6.1.8.16   APPLY        COMPLETE     09/16/14     13:55:32    
                 6.1.9.30   COMMIT       COMPLETE     07/02/15     16:36:49    
                 6.1.9.30   APPLY        COMPLETE     07/02/15     16:33:23    
                 6.1.9.45   COMMIT       COMPLETE     09/04/15     15:45:19    
                 6.1.9.45   APPLY        COMPLETE     09/04/15     15:45:10    
                6.1.9.101   APPLY        COMPLETE     09/14/17     16:44:45     

그렇지 않으면 위 출력의 마지막 줄만 원합니다.

답변1

AIX 부분의 경우 bos.adt.base파일 세트는 하드코딩되지 않으며 요구 사항도 아닙니다.모두업데이트 수 - 적용 및 커밋 - 커밋뿐만 아니라 /unix 심볼릭 링크(커널을 가리키는)가 있는 파일 세트의 기록을 요청합니다.

lslpp -q -c -h -Or $(lslpp -q -c -w /unix | cut -d: -f2) | tail -1 | cut -d: -f7-8

여러 부분으로 나누어 보면 다음과 같습니다.

  • -q -- 열 헤더를 인쇄하지 않습니다.
  • -c -- 출력을 콜론으로 구분하여 인쇄합니다(분석하기 더 쉬움).
  • -h -- 파일 세트 기록
  • -w -- 주어진 파일을 소유하는 파일 세트
  • r-또는-여기서 oot 또는 usr 작업이 하나만 필요합니다.

내부에서부터 작업하여 파일 세트 이름을 얻은 lslpp ... -w다음 해당 파일 세트의 기록을 요청한 다음 파이프를 통해 tail마지막 행(최신 행으로 가정)을 가져온 다음 파이프를 통해 cut날짜 및 시간 필드를 가져옵니다. .

Solaris 부분의 경우 최근에 적용된 커널 패치로 충분할까요?

nawk -F: '/^PATCH_INFO/ { sub(" From", ""); print $2":"$3":"$4; }' \
  /var/sadm/pkg/SUNWckr/pkginfo | 
    sort -k6n | tail -1

답변2

Solaris에서는 다음 명령을 실행하여 설치된 커널 패치를 볼 수 있습니다. uname -v | awk -F_ '{print $2}'

그런 다음 다음을 실행하면: ls -lat /var/sadm/patch |grep <patch>

설치된 타임스탬프가 표시됩니다. 추가 정보가 필요한 경우 이 디렉터리에 로그도 있습니다.

답변3

출력의 마지막 줄을 다음과 같이 파이프할 수 있습니다 tail -1.

lslpp -ha bos.adt.base | sed -n '/COMPLETE/ s/^k.*\s\s//p' | tail -1

또한 grep명령을 명령으로 축소했습니다 . 자체적으로 수행할 수 없는 작업 sed은 수행하지 않았습니다 .sed

참고: 저는 AIX 명령에 익숙하지 않기 lslpp때문에 그것이 작업에 적합한 도구이고 가장 적절한 옵션을 사용했다고 가정합니다. 원하는 것을 얻기 위해 매뉴얼 페이지를 사용하는 더 좋은 방법이 있는지 알아보려면 매뉴얼 페이지를 읽어보는 것이 좋습니다.

관련 정보