コンピュータでは「プロセス」と呼ばれる多くの処理が行われています。Linuxの「システムモニター」やWindowsの「タスクマネージャー」、macOSの「アクティビティモニタ」では、さまざまなプロセスが動作している様子を確認できます。今回は「ps」コマンドを通じて、Linuxのプロセスの様子を見ていきましょう。
Linuxでは複数の処理が同時に行われており、1つ1つの処理は「プロセス」として管理されています。
例えば、コマンドプロンプトで「ls」と入力して[Enter]キーを押すと、lsコマンドが実行されます。これを「lsのプロセスが生成される」と表現します。プロセスは、仕事が終わると破棄されます。lsコマンドのプロセスの場合は、ファイルリストの表示が終了するとともに破棄されます。
対して、シェルのプロセスは、ログイン後あるいは端末アプリケーションの起動とともに開始され、ログアウトまたは端末アプリケーションを閉じるまでメモリに保持されます。
Linuxで動作しているプロセスは、「ps」コマンドで調べることができます。
psコマンドをオプションを付けずに単独で実行すると、現在の端末で自分が起動したコマンドのプロセスが表示されます。
他の端末で実行しているプロセスを確認する場合は、「a」オプションを使用します。この場合、他のユーザーが実行しているプロセスも表示されます。さらに「u」オプションを追加して「ps au」と実行すると、ユーザー名なども併せて確認できます。
ps
(現在の端末で実行されている自分のプロセス(自分が起動したプロセス)が表示される)
ps a
(他の端末で実行されているプロセスも表示される)
ps au
(他の端末で実行されているプロセス、ユーザー名などの情報も併せて表示する)
以下の実行画面では、“X(X Window System)上で端末アプリケーションが2つと、別のクライアントからユーザー「penguin」がsshで接続している”という状況でpsコマンドを実行しています(画面1)。
X上の端末ではpsコマンドと「top」コマンド(動作中のプロセスをリアルタイム表示するコマンド)、sshでログインしているユーザーは「man」コマンドを実行しています。manはマニュアルを参照するためのコマンドで、デフォルトでは「less」コマンドを使ってマニュアルの内容を表示します。
動作している端末は「TTY」の列で判別できます。先ほどの画面1をあらためて見てみましょう(画面2)。X(※)が「tty1」と表示されており、このコンピュータの1つ目の端末で動作していることが分かります。
【※】CentOSでの実行ファイル名は「Xorg」なので「COMMAND」の列で「/usr/bin/Xorg」と表示されています。
X上で動作する「xterm」などの端末アプリケーションや、telnetやsshによるログインは「仮想端末(pseudo terminal)」として「pts/番号」で表示されます。
ここでは「pts/0」上でbashとtopコマンドが、別の端末アプリケーション(pts/1)ではbashとpsコマンドが動作しています。psコマンドを実行したのがこの「pts/1」です。
また、「pts/2」にはユーザー「penguin」がsshでログインしていることが分かります。bashとman、そしてmanから呼び出されたlessコマンドが実行中です。
プロセスには、それぞれ“固有の番号”が割り振られます。これを「プロセスID(PID)」と呼びます。
例えば、「pts/1」で1回目に実行したpsコマンドのプロセスIDは「4609」になっています(画面3)。
psコマンドは、プロセスを表示してすぐに終了します。2回目に実行したときは新たに「4613」というプロセスIDが割り振られています。
一方、ログインシェルであるbashは、ログアウトするまで(端末アプリケーションの場合はアプリケーション終了をするまで)メモリに滞在するので、「pts/1」のbashのプロセスIDは「4138」ままです。
Copyright © ITmedia, Inc. All Rights Reserved.