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 操作が 1 つだけ必要です。

内部から作業してファイルセット名を取得し、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ので、それが作業に適したツールであり、最も適切なオプションを使用したとします。必要なものを得るためにマニュアルページを使用するより良い方法があるかどうかを確認するには、マニュアルページを読むことをお勧めします。

関連情報