next up previous contents
Next: 1.4 SIGNAL Up: 1. UNIXシステムの概要と起動・シャットダウン Previous: 1.2 スーパユーザ

1.3 プロセスとは

プロセスとは、「実行されているプログラム」のことであると考えて良いでしょう。UNIXというOSは、複数のプロセスを同時並行に実行する(走らせる)ことができます。プログラムとは、ある目的のために並べられた命令の集合であり、指定された場所から、実行が始められ、終了命令に出会うか、強制的に終了させられるまで、実行が続きます。
 通常、1台のコンピュータには、CPUが1つだけであり、1つのCPUは、一度に1つの命令しか実行できません。そう考えると、1台のコンピュータが、同時に複数のプロセスを実行できることは、不思議に思えるかもしれませんが、実は、複数のプロセスは、見かけ上同時に走っているようでいて、実際には、1つのプロセスを、短時間実行したら、次のプロセスを短時間実行し、また、別のプロセスが、短時間実行をする、というように、少しずつ、時間を分け合って、実行しているのです。この分割の時間が短いため、人間の見かけ上は、同時に複数のプロセスが実行されているように見えるのです。
 
 プロセスは、必要に応じて、実行が開始され、(プロセスの生成)必要が無くなったら、終了します。(プロセスの終了)
 たとえば、あなたが、コマンドラインから、何か命令を打ち込むことで、新たにプロセスが生成され、実行が終了すると、そのプロセスが終了します。
 プロセスには、それぞれ、別の番号が付けられ、(通常0、1,2...の順)同時に、同じ番号のプロセスが存在することはありません。

 実行されているプロセスを調べるには、次のようにして、プロセスの一覧を表示させます。

lxc3% ps -fe | more
     UID   PID  PPID  C    STIME TTY      TIME CMD
    root     0     0  0   5月 06 ?        0:01 sched
    root     1     0  0   5月 06 ?        4:30 /etc/init -s
    root     2     0  0   5月 06 ?        1:14 pageout
    root     3     0  0   5月 06 ?       90:50 fsflush
    root   243   239  0   5月 06 ?        0:04 /usr/lib/saf/ttymon
    root    85     1  0   5月 06 ?        8:51 /usr/sbin/rpcbind
    root   239     1  0   5月 06 ?        0:03 /usr/lib/saf/sac -t 300
    root   195     1  0   5月 06 ?        0:00 /usr/sbin/cssd
    root   115     1  0   5月 06 ?        0:00 /usr/sbin/in.named
    root    87     1  0   5月 06 ?        0:00 /usr/sbin/keyserv
    root    95     1  0   5月 06 ?        0:00 /usr/sbin/kerbd
    root    93     1  0   5月 06 ?        0:25 /usr/lib/netsvc/yp/ypbind
    root   119     1  0   5月 06 ?        0:08 /usr/sbin/inetd -s
    root   122     1  0   5月 06 ?        0:03 /usr/lib/nfs/statd             
 --- 中略 ---
  fujiki 25381 25365  1 10:12:49 pts/0    0:00 more
    root 17736   119  0   6月 25 ?        0:05 rpc.ttdbserverd
    root 25380 25365  2 10:12:49 pts/0    0:00 ps -fe
    root 25317   119  0 22:29:05 ?        0:03 rpc.rusersd
  fujiki 25365 25363  3 10:12:19 pts/0    0:02 -csh
    root 25363   119  1 10:12:19 ?        0:00 in.telnetd

上の表示の、各フィールドは、次のような意味です。

UID このプロセスを実行しているユーザ名
PID プロセス番号
PPID このプロセスの親プロセス番号
C  プロセスが使用しているCPU時間の%
STIME 起動された時刻
TTY  どの端末から起動されたか(?は、端末以外からの起動)
TIME プロセスによって使用されたCPU時間の合計
CMD コマンド名

また、コマンドのオプションには、次の物があります。
 
ps -e 全てのプロセス
ps -d セッションリーダを除く全てのプロセス
ps -a プロセスグループに属していないものを除くすべてのプロセス
ps -j セッション/プロセスグループID付き
ps -c スケジューラ情報表示
ps -f 詳細な表示
ps -l 最も詳細な表示
 

psコマンドでの、チェックポイント
 
一人でたくさんのプロセスを走らせていないか?ユーザ名を見る
大量のCPU時間を消費しているプロセスはないか?TIMEを見る
   (ただし、システム起動後、ずっと動いている必要なプロセスもある。)
CPU時間の割合が異常に多いプロセスはないか?Cを見る
   (ただし、数10秒程度で、終わるなら、かまわない。)
大量のメモリを消費しているプロセスはないか。ps -l で、SZ表示を見る。
同じプロセスが、異常にたくさん実行されていないか?CMD を見る
 



Noriyo Kanayama