2012年2月16日木曜日

パッケージ更新した後、古いパッケージをロードしたままになっているプロセスを見つける

こんにちは、OSSテクノロジーセンターの原です。

今回は yum update した後、古いパッケージをロードしたままになっているプロセスを見つけてくれる便利な yum plugin を紹介しようと思います。

パッケージ名は yum-plugin-ps です。

RHEL 6.x から利用可能で、RHEL Server Optional チャンネルにあります。

インストール:

# yum install -y yum-plugin-ps

使い方としては、何かをインストール、アップデートした後に実行します。

その前に、一旦 yum ps コマンドを使って、現在の状況を確認したいと思います。

# yum ps
Loaded plugins: product-id, ps, security, subscription-manager
Updating certificate-based repositories.
       pid proc                  CPU      RSS      State uptime
ps
#

特になにもないようです。では一例として apr パッケージをアップデートしてみます。

# yum update -y apr apr-util
Loaded plugins: product-id, ps, security, subscription-manager
Updating certificate-based repositories.
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-3.el6 will be updated
---> Package apr.x86_64 0:1.3.9-3.el6_1.2 will be an update
---> Package apr-util.x86_64 0:1.3.9-3.el6 will be updated
--> Processing Dependency: apr-util = 1.3.9-3.el6 for package: apr-util-ldap-1.3.9-3.el6.x86_64
---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be an update
--> Running transaction check
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6 will be updated
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================
 Package               Arch     Version            Repository     Size
======================================================================
Updating:
 apr            x86_64   1.3.9-3.el6_1.2   rhel-x86_64-server-6  123 k
 apr-util       x86_64   1.3.9-3.el6_0.1   rhel-x86_64-server-6   87 k
Updating for dependencies:
 apr-util-ldap  x86_64   1.3.9-3.el6_0.1   rhel-x86_64-server-6   15 k

Transaction Summary
======================================================================
Upgrade       3 Package(s)

Total download size: 226 k
Downloading Packages:
----------------------------------------------------------------------
Total                                       25 MB/s | 226 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : apr-1.3.9-3.el6_1.2.x86_64                          1/6
  Updating   : apr-util-1.3.9-3.el6_0.1.x86_64                     2/6
  Updating   : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                3/6
  Cleanup    : apr-util-ldap-1.3.9-3.el6.x86_64                    4/6
  Cleanup    : apr-util-1.3.9-3.el6.x86_64                         5/6
  Cleanup    : apr-1.3.9-3.el6.x86_64                              6/6
Installed products updated.

Updated:
  apr.x86_64 0:1.3.9-3.el6_1.2       apr-util.x86_64 0:1.3.9-3.el6_0.1

Dependency Updated:
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1

Complete!
#

アップデートできたら、早速 yum ps コマンドで確認してみます。

# yum ps
Loaded plugins: product-id, ps, security, subscription-manager
Updating certificate-based repositories.
       pid proc                  CPU      RSS      State uptime
apr-1.3.9-3.el6_1.2.x86_64
     14216 httpd                0:00   3.8 MB   Sleeping: *07:01
     14218 httpd                0:00   2.4 MB   Sleeping: *07:01
     14219 httpd                0:00   2.4 MB   Sleeping: *07:01
     14220 httpd                0:00   2.4 MB   Sleeping: *07:01
     14221 httpd                0:00   2.4 MB   Sleeping: *07:01
     14222 httpd                0:00   2.4 MB   Sleeping: *07:01
     14223 httpd                0:00   2.4 MB   Sleeping: *07:01
     14224 httpd                0:00   2.4 MB   Sleeping: *07:01
     14225 httpd                0:00   2.4 MB   Sleeping: *07:01
apr-util-1.3.9-3.el6_0.1.x86_64
     14216 httpd                0:00   3.8 MB   Sleeping: *07:01
     14218 httpd                0:00   2.4 MB   Sleeping: *07:01
     14219 httpd                0:00   2.4 MB   Sleeping: *07:01
     14220 httpd                0:00   2.4 MB   Sleeping: *07:01
     14221 httpd                0:00   2.4 MB   Sleeping: *07:01
     14222 httpd                0:00   2.4 MB   Sleeping: *07:01
     14223 httpd                0:00   2.4 MB   Sleeping: *07:01
     14224 httpd                0:00   2.4 MB   Sleeping: *07:01
     14225 httpd                0:00   2.4 MB   Sleeping: *07:01
apr-util-ldap-1.3.9-3.el6_0.1.x86_64
     14216 httpd                0:00   3.8 MB   Sleeping: *07:01
     14218 httpd                0:00   2.4 MB   Sleeping: *07:01
     14219 httpd                0:00   2.4 MB   Sleeping: *07:01
     14220 httpd                0:00   2.4 MB   Sleeping: *07:01
     14221 httpd                0:00   2.4 MB   Sleeping: *07:01
     14222 httpd                0:00   2.4 MB   Sleeping: *07:01
     14223 httpd                0:00   2.4 MB   Sleeping: *07:01
     14224 httpd                0:00   2.4 MB   Sleeping: *07:01
     14225 httpd                0:00   2.4 MB   Sleeping: *07:01
ps
#

どうやら httpd が古い apr のパッケージをロードしたままになっているようですので、再起動しましょう。

# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
#

新しい apr を読みなおすことができたでしょうか。再度 yum ps を確認します。

# yum ps
Loaded plugins: product-id, ps, security, subscription-manager
Updating certificate-based repositories.
       pid proc                  CPU      RSS      State uptime
ps
#

めでたく古い apr のパッケージをロードしたままになっているプロセスはなくなったようです。

ちなみに SLES 11 でも同じような機能をもつ zypper ps というコマンド存在します。(むしろ zypper ps の方が実装されたのが早かったハズです)

利用方法は yum ps と同じですが、zypper の方は特別にプラグインを導入する必要はありません。

# zypper ps
No processes using deleted files found.
#

今回確認に利用した apr は yum ps (zypper ps) を利用しなくても、 Apache Portable Runtime (APR) の名前から、Apache の再起動が必要そうなイメージが付きますが、パッと見どのプロセスが関連しているのかわからないパッケージも時々あるかと思います。

そんな時は是非この yum ps (zypper ps) を利用してみてください。

ではでは。

0 件のコメント:

コメントを投稿