2011.12.26
前へ
次へ
目次へ戻る
ホームページトップへ戻る

パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!

[第278回]


●実行中のプロセスIDを知る

前回はパラレルポート出力プログラムを無限ループにして実行したところ、ある条件でそのプログラムが終了しないためUbuntu11.10そのものも終了できなくなってしまう、という事例についてお話をしました。
この無限ループプログラムさえ強制的に終了させることができたら、Ubuntu11.10も正常に終了することができるようになるのではないか、と思うのですが、パラレルポート出力プログラムは、「端末」を閉じてしまったあとでも実行され続けているのですから、普通の手続きではもはやそれを止めることはできません。

なんとかそれを止める方法はないものか?
あちこち探ってみましたら、PIDなるものに行きつきました。
Windowsでもリナックスでもいろいろなプロセス(タスク)が同時に複数実行されています。
OSは実行中のプロセスにつけられたPID(通常何桁かの整数値)でそれを管理しているのだそうです。
PIDさえわかれば、そのPIDを指定してプロセスを強制終了させることができる、との情報を得ました。

以下実際の画面で説明します。

まずパラレルポート出力プログラム(outtest7)を実行します。
ここで、ある条件でいきなりUbuntu11.10を終了しようとすると、outtest7が終了されないでそのまま実行を続けることになるのですが、その状況をここで再現してみても、画面からはわかりませんから、そうすることはあまり意味のあることではありません。
そこでそうする代わりに、outtest7を実行したまま、もうひとつ別の「端末」を起動して、そこで必要な操作を行なってみることにしました。

新たに開いた「端末」(手前)からPIDを表示するためのコマンドを入力します。
PIDを表示するコマンドは ps です。
それにパラメータ −u をつけて、さらに rootとして実行されているプロセスを表示させるため、最後にrootをつけます。

ps −u root[Enter]

です。
下に上の画面の部分を縮小しないでそのままのサイズで示します。


ps −u root[Enter]を実行しました。

現在実行中のプロセスが表示されました。
下から2つめにouttest7が表示されています。
先頭の数字がPIDです。
outtest7のPIDは1793であることがわかりました。

今回は目的とするプログラム名がはっきりわかっていますから、そのプログラム名を名指しで指定する方法もあります。

ps −C outtest7[Enter]
と入力することでも、そのPIDを知ることができます。

●プロセスの強制終了コマンドはkill

プロセスの強制終了コマンドは
kill PID[Enter]
です。
rootとして実行します。

画面をよくご覧ください。
手前の「端末」がアクティブなのですが、手前の「端末」で
sudo kill 1793[Enter]
を実行したところ、裏の「端末」で実行されていたouttest7が強制終了されたことを示す表示が、裏の「端末」に表示されました。

めでたし、めでたし、です。

パソコンをつくろう![第278回]
2011.12.26upload

前へ
次へ
目次へ戻る
ホームページトップへ戻る