2008年 9月 25日 木曜日
やっぱり Sun がスキ!
Global Zone から Non Global Zone のプロセスを確認する方法
今回は、Global Zone から Non Global Zone のプロセスを確認する方法を いくつか紹介します。
Zone が複数起動している環境で、どこの Zone でどんなプロセスが動作してい るか確認する方法の一つに、Global Zone から ps コマンドに -Z オプションを 付けて確認する方法があります。
# ps -efZ
ZONE UID PID PPID C STIME TTY TIME CMD
global root 0 0 0 00:04:41 ? 0:16 sched
global root 1 0 0 00:04:48 ? 0:00 /sbin/init
....
....
apache daemon 3701 1 0 00:54:47 ? 0:00 /usr/lib/nfs/statd
appserv root 3549 3532 0 00:54:40 ? 0:00 /sbin/init
global root 3408 889 0 00:37:11 pts/2 0:00 /bin/sh -c dtpad -server
apache daemon 3719 1 0 00:54:47 ? 0:00 /usr/lib/nfs/lockd
appserv root 3618 1 0 00:54:43 ? 0:00 /usr/sbin/nscd
....
ps コマンドに -Z オプションを付与すると、最初のカラムにプロセスが動作して
いる Zone 名が表示されます。さらに特定の Zone で動作しているプロセスの一覧 を表示させる時は、ps -efZ の結果を Zone 名で grep して確認されている方も多いと思います。
# ps -efZ | grep apache apache daemon 1041 1 0 22:09:39 ? 0:00 /usr/lib/crypto/kcfd apache root 978 1 0 22:09:32 ? 0:00 zsched global root 977 1 0 22:09:30 ? 0:00 zoneadmd -z apache apache root 991 978 0 22:09:33 ? 0:00 /sbin/init apache root 995 1 0 22:09:33 ? 0:03 /lib/svc/bin/svc.startd .... ....しかし、-Z オプションは、 8 文字以上の Zone 名には対応していない為、 仮に Zone 名 appserver01 と appserver02 が存在した場合は grep で 特定の Zone 名をフィルタリングする事ができません。
[例] Zone 名 sgeexec01 と sgeexec02 が起動している時の場合
# ps -efZ | grep svc.conf global root 9 1 0 22:03:21 ? 0:06 /lib/svc/bin/svc.configd sgeexec0 root 2102 1 0 22:15:24 ? 0:05 /lib/svc/bin/svc.configd sgeexec0 root 2244 1 0 22:15:32 ? 0:05 /lib/svc/bin/svc.configdそんな時は、少し面倒ですが、ps コマンドに -o zone オプションを付与して結果を 表示させる事で解決できます。
# ps -ef -o zone,pid,tty,comm | grep svc.conf global 9 ? /lib/svc/bin/svc.configd sgeexec01 2102 ? /lib/svc/bin/svc.configd sgeexec02 2244 ? /lib/svc/bin/svc.configdこれで 8 文字以上の Zone 名が存在している場合でも grep でフィルタリングが可能に なりました。
その他、grep を使わないで Global Zone から特定の Non Global Zone で動作している プロセスの一覧を確認する方法として zlogin を使用する事もあります。
# zlogin sgeexec01 ps -ef
UID PID PPID C STIME TTY TIME CMD
root 2085 2085 0 22:15:24 ? 0:00 zsched
root 2815 2085 0 22:20:07 ? 0:00 sh -c ps -ef
root 2566 2564 0 22:15:41 ? 0:00 /usr/lib/autofs/automountd
root 2611 2085 0 22:15:42 ? 0:00 /usr/sbin/syslogd
root 2564 2085 0 22:15:41 ? 0:00 /usr/lib/autofs/automountd
....
....
zlogin コマンドは、ゾーンにログインする為だけのコマンドではなく、
引数にゾーン上で実行するコマンドを指定する事で Global Zone から簡単に Non Global
Zone のコマンド実行が可能です。
今回は、 Zone 用にエンハンスされた ps コマンドを中心に説明しましたが、pgrep コ マンドや、 pkill コマンドも Zone 対応されておりますのでその使い方を紹介します。
# pgrep sshd 579 2539 3092 # pgrep -z apache sshd 2539これと同じ使い方で pkill も使えます。
# pkill -z apache sshd
Posted at 05:06午後 9 25, 2008 by Naoyuki Yamada in Sun | 投稿されたコメント[0]
投稿されたコメント: