killコマンド-Linuxでは、プログラムのことをプロセス(process)と呼びます。プログラムは主にディスクに格納されており、メモリにコピーされた時にはプロセスと呼ばれます。LinuxはマルチタスクOSですから、同時に複数のプロセスがシステムで動くことになります。そのためプロセスの管理は一般ユーザにとっても、管理者にとっても重要です。プロセスには1〜32767までの番号(プロセスID→PID)が一意に割り振られます。互いの区別はPIDにより行われています。プロセスは起動したユーザが所有権を持ち(特殊な状態で変更することが可能です)、そのユーザレベルでしか行動することはできません。【コマンド説明】ps:processプロセスを確認するにはpsコマンドを用います。CPU時間、コマンド名を表示します。psには多くのオプションがありますが、通常使うのはa,u,x,wというオプションです。慣例として、psのオプションには、オプションであることを示す“-”をつけません。(これはBSD書式です。UNIX書式の場合は必ず”-“を必要とします)killプロセスを終了させるためのコマンドです。「SIGTERM」や「SIGKILL」というシグナルを送信します。killコマンドで指定可能なシグナルの一覧は、killコマンドに”-l”オプションを付けて実行すると確認できます。psコマンドにオプションを付けて実行し、動作中のプロセスを確認してみましょう。[watchdog/1]出力結果は以下のように読むことができます。起動しているプロセス名なんらかの理由でプロセスを終了させたい場合には、PIDをpsコマンドで確認した上で、killコマンドを使って停止させることができます。XXXX(実際のID番号)を終了させたいという場合は、killコマンドに引数としてXXXXを渡すことで、指定したPIDを持つプロセスを終了させることができます。XXXXしかし、他人が所有するプロセスを止めようとすると、(root以外は)拒否されます。killコマンドによるプロセスの終了というものを紹介しましたが、この仕組みについて少し詳しく知っておきましょう。UNIX/Linuxにはシグナル(信号)というものが用意されていて、このシグナルを特定のプロセスに送ることができます。シグナルは一般的なものから内部用のものまで、合わせると数十存在します。この情報はオンラインマニュアルで調べると細かい情報があります。シグナル名の一覧はkillコマンドに”-l”オプションを付けて実行すると表示されます。-l先ほど用いたkillコマンドは、このシグナルを送りつけるためのものであり、特にオプション指定しない場合は、送信されるシグナルは“SIGTERM”(15番)となります。このシグナルは「終了して下さい」という意味で、受信したプロセスは終了に向けた処理を行うようになります。シグナルを受けた時の反応は、一部の例外を除いてプログラミング可能なため、わざとシグナルの意図に従わないという構造のプログラムも存在しています。そもそも受けたシグナルに応答しないものもあります。それ以外にも、暴走していてシグナルに応答できないというケースもあります。いったプロセスはいくらkillしても終了しません。このような暴走プロセスに対して効果があるのが“SIGKILL”(9番)であり、強制終了させることができます。SIGKILLを送るためには、下記のようにコマンドを実行します。XXXX“-番号”でシグナル番号を指定することもできます。(ここでは”-9′′と指定)応用例として、killallコマンドがあります。こちらはプロセスIDではなくプロセス名を引数とすることにより、該当したプロセス全てにシグナルを送ることが可能という便利なものですが、意図していないプロセスにまでシグナルを送ることがあるため(他人のプロセスや同名で異なるプロセス等)、rootでの使用はおすすめしません。プロセスを確認するために有効なツールとしては、psコマンドの他にtopコマンドがあります。topコマンドを使うと、端末全体を用いて、現在のプロセス状態を眺めることができます。topコマンドは一定時間(標準設定で5秒)ごとに、最新の統計を表示するようになっており、継続的に監視をする時には非常に便利です。表示する際のプロセスの並べ方をCPUの利用率順や稼働時間順、メモリ使用順に変更、特定のプロセスにシグナルを送信する等の機能が用意されています。表示中に“?”を入力することでキー操作を確認できますのでチェックしてみて下さい。終了は“q”となっています。03-5295-8424solutions[at]amulet.co.jp※[at]の部分を@に変えてご利用下さい。