パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!
[第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
前へ
次へ
目次へ戻る
ホームページトップへ戻る