next up previous contents
Next: 2.3.1 killコマンド Up: 2. システムのブート・シャットダウンとプロセス管理 Previous: 2.2.6 bootのまとめ

2.3 Solarisのプロセス

UNIXはマルチタスクOSであり、常に多くのプロセスが資源を分けあって動作し ています。これらのプロセスの状態は、psコマンドで見ることができます。 psコマンドにも多くのオプションがありますが、SYSTEM Vのpsでは

ps -ef2.2
を実行すれば、現在実行されている全プロセスについての表示が得られま す。より詳細な情報を得たい場合、ps -elを用います。

ps -efの出力の各欄の意味を説明しておくと、

UID
このプロセスの所有者
PID
このプロセスのプロセスID
PPID
親プロセスのプロセスID
C
スケジューリングのためのプロセッサ使用率
STIME
起動時刻
TTY
このプロセスの制御端末
COMD
プロセスのコマンド名
となっており、このうち特に重要なのはコマンド名とプロセスIDです。ある特 定のプロセスについて情報を得たければ、
ps -ef | grep コマンド名
とすれば良いわけです。ps -elの場合、さらにプロセスのサイズ、累積 CPU時間なども分かります。 psコマンドの出力を見る場合、次のような点に注意してみます。

ただし、これらの値が大きいからといって、必ずしもそのプロセスの異常を示 すとは限りません。システムの起動時にrcファイルから起動され、終了するこ となく動作しているプロセスならば当然累積CPU時間は増えていきますし、表 示されるプロセスのサイズもあくまでも仮想メモリサイズであり、Xサーバな どで大量のフォントの読み込みなどを行なえばサイズは増加します。

リアルタイムで各プロセスの状況を知りたければ、フリーなツールでtop 2.3とい うものがありますのでこれをインストールするのもよいでしょう。これはCPU 時間の消費の大きなプロセスから順に表示してくれますから、システムの活動 状況が手にとるように分かります。

psコマンドの実行例を見てみましょう。

ps -ef

 UID   PID  PPID  C    STIME TTY      TIME COMD
root     0     0 80   Jul 28 ?        0:22 sched
root     1     0 80   Jul 28 ?        2:42 /etc/init -
root     2     0 80   Jul 28 ?        0:06 pageout
root     3     0 80   Jul 28 ?       21:52 fsflush
root   234     1 22   Jul 28 ?        0:00 /usr/lib/saf/sac -t 300
momma 11191     1 80 03:11:09 console  0:01 -csh
root   123     1 80   Jul 28 ?        0:01 /usr/sbin/inetd -s
root   104     1 80   Jul 28 ?        0:21 /usr/sbin/rpcbind
root   106     1 10   Jul 28 ?        0:00 /usr/sbin/keyserv
root   188     1 80   Jul 28 ?        0:07 /usr/lib/utmpd
root   114     1 19   Jul 28 ?        0:00 /usr/sbin/kerbd
root   112     1 80   Jul 28 ?        0:12 /usr/lib/netsvc/yp/ypbind -broadcast
root   126     1 42   Jul 28 ?        0:00 /usr/lib/nfs/statd
root   128     1 80   Jul 28 ?        0:01 /usr/lib/nfs/lockd
root   147     1 80   Jul 28 ?        1:42 /usr/lib/autofs/automountd
root   198     1 75   Jul 28 ?        0:01 /usr/sbin/vold
root   151     1 70   Jul 28 ?        0:01 /usr/sbin/syslogd
root   171     1 18   Jul 28 ?        0:00 /usr/lib/lpsched
root   161     1 80   Jul 28 ?        0:08 /usr/sbin/cron
root   179   171 12   Jul 28 ?        0:00 lpNet
root   180     1 80   Jul 28 ?        0:01 /usr/lib/sendmail -bd -q1h

これはSolarisシステムで動作しているプロセスの一部です。誰もログインし ていない状態でもこのように数多くのプロセスが動いています。これらのシス テムの動作を影で支えるプロセスを「デーモン(daemon)」2.4と呼んでいます。上のプロセスの中に、名前が ``d''で終っ ているものが多いのは、「$\ast$デーモン」を略しているためです。

UNIXシステムにおいては、プロセスの生成は、親プロセスがfork()システムコー ルで自分の複製を作り、その後子プロセスの方がexex()システムコールを実行 することにより別プロセスに変化することにより行なわれます。この fork()-exec()によるプロセスの生成をspawnと言っています。 プロセス番号0から3までのプロセスは全プロセス中でも特別な地位を占めてい ます。

0:sched
全プロセスに対する実行時間のスケジューリングを行ないま す。
1:init
ここにあげた以外の全プロセスを産み出す元になります。
2:pgout
仮想記憶の管理を行ないます。
3:fsflush
ファイルシステムのディスクへの書き出しを行ないます。

これ以外の全プロセスは、initによって後述するrcファイルが実行されることに より生み出されたものなのです。



 

Noriyo Kanayama