5.1 プロセス
中央処理装置(Central Processing Unit)は演算機能と制御機能を持ち,メモリに貯えられたプログラムを実行します.
例えば,ls コマンドを実行すると、ディスクから
「指定したディレクトリの中にあるファイルの一覧を表示せよ」
というプログラムが主記憶に読み込まれ、CPU がそこに書かれた手順を実行します。 CPU がプログラムを実行している状態を、プロセス
(process)と呼びます。
- emacs や netscape を実行している時は,それぞれがプロセスとして存在します.
- 同じプログラムを複数回読み込んで、複数のプロセスとして実行することもできます。
ここで,実際に現在どういったプロセスがあるのかをみてみましょう.
端末ウィンドウで ps と入力すると以下のようになります.
% ps PID TT S TIME COMMAND 2842 pts/1 S 0:00 tcsh 2844 pts/2 R 0:00 -tcsh |
ここで左上に PID というものが出ています.これはプロセスごとに割り当てられている番号です.この番号をプロセスID(process id)といいます.
プロセスの強制終了
ls コマンドのプロセスは,ファイル名を表示するとすぐに終了します.emacs や netscape は,終了のキーやメニューが用意されています.しかし,時にはプログラムにミスがあって,実行が止まらなくなったり,何をしても反応がなくなったりします.そのような時には,そのプロセスを強制終了させなければなりません.
- コマンドを起動した端末ウィンドウで C-c を入力します.これでシグナル(signal)というものがプロセスに送られて,通常のプロセスは強制終了します.
- プロセスによっては C-c でも終了しないものがあります.そのような時は次の kill コマンドを使います.
まず,ps コマンドで終了したいプロセスの pid を調べます.
その後,次のように入力します.
% kill -9 (終了したいプロセスの pid) |
そうするとプロセスが終了します.
ここで kill のオプションとしてついている -9 というのは,SIGKILL という種類のシグナルを送ることを指示しています.シグナルには他にもたくさんの種類があり,強制終了以外にもいろいろな用途に使われます.
● 練習問題
- xclock & を実行し,ps コマンドの表示を確認しなさい.
- kill コマンドで上の xclock を終了させなさい.
UNIXに関するトラブルシューティング P.378参照