killは実行しているプロセスを終了するコマンドだ。
普通ではない動作をしているプロセスを終了する。他にも正規表現検索などでコンピュータに負荷をかけている動作を止める時などに使用する。
今回は実行中のプロセスの確認と、killを使ったプロセスの終了の方法を解説する。Linuxユーザーなら覚えておかなければならないコマンドだ。ぜひ把握しておこう。
また、下記ページで強制終了については詳しくまとめている。参考にしていただければと思う。
目次
killコマンドの基本
コマンドの基本動作
使い方は、次のとおりだ。
$ kill プロセス番号(PID)
では実際に操作してみよう。
仮に、今、バックグラウンドで次のような、/etcディレクトリ内の各ディレクトリ内のファイルに書いてある「stepという」文字を探すというコマンドが実行されているとしよう。
$ grep -r step /etc
/etcディレクトリはLinuxの各種設定の膨大な情報が100以上のファイルに渡って記載されている。
その中からstepという文字を探しているのだ。
かなりな時間と負荷がかかっていることが想像できるだろう。
まず、psコマンドの-aオプションで、現在、実行しているプロセスを確認してみよう。
$ ps -a
プロセス番号(PID)24573番がgrepの動作をしている。
これを止めるためには次のコマンドになる。
$ kill 24573
プロセス番号(PID)24573番のプロセスが終了した。
実行しているプロセスをpsコマンドの-aオプションで見てみよう。
$ ps -a
プロセス番号(PID)24573番で動いていたgrepのプロセスが終了し、表示されていない。
表示されていないプロセスに対して、killコマンドを実行しても特に影響はない。
プロセス番号(PID)27567番は、存在しないプロセスだが、このプロセスを終了しようとしてみよう。
そのようなプロセス番号がないメッセージが表示されただけで、特に影響はない。
しかし、プロセスの中にはシステムとして重要なプロセスもあるので、実際に終了したいプロセスかどうか、確認の上、慎重に操作していくべきだ。
killコマンドのオプション
killコマンドにはいくつかオプションもある。基本的には上のようにオプション無しで使うのが通常だが、活用できる機会があるはずだ。
-[シグナル名またはシグナルID]オプション
killコマンドは「プロセスを殺す」というだけではなく、本来的にはプロセスに対してシグナルを送るコマンドだ。シグナルとはプロセスに送られるメッセージのことを指すと思ってほしい。
終了や再起動などのシグナルを受け取ると、プロセスはそのように動くわけだ。
$ kill -[シグナル名またはシグナルID] PID
でシグナルを指定して送ることができる。シグナルにはそれぞれ名前とIDがあり、どちらでも反応してくれる。
下記のようにも書ける。
$ kill -s [シグナル名またはシグナルID] PID
$ kill -SIGシグナル名 PID
シグナルの種類は下記コマンドで確認しよう。
-l オプション
利用できるシグナルの一覧を表示するコマンドだ。実際に見てみよう。
$ kill -l
このようにたくさんのシグナルが利用できることがわかる。それぞれのシグナルIDもわかるはずだ。全部解説しても意味があるとも思えないので、使いやすいものだけご紹介しよう。
シグナル名 | シグナルID | 動作 |
HUP | 1 | ハングアップ(端末が制御不能もしくは切断による終了) |
INT | 2 | キーボードからの割り込み(Ctrl+Cと同じ) |
KILL | 9 | 強制終了(デフォルトよりも強制的に修正する) |
TERM | 15 | 終了(デフォルトの設定だ) |
CONT | 18 | 停止しているプロセスを再開 |
STOP | 19 | 一時停止 |
ジョブとプロセス
よく混乱する用語で、ジョブとプロセスがある。どちらもコンピュータの処理のことという意味では同じだ。
ジョブは、処理の流れ全体を指し、プロセスは、一つ一つの作業のことを指す。例えるなら、自動車を一台作るのに、部品を作るのがプロセス、自動車を一台完成させる作業自体がジョブだ。
一つのプロセスだけで済むジョブもあるし、何百というプロセスを組み合わせて一つのジョブを成すこともあるだろう。
killコマンドはジョブではなく、一つのプロセスを終了させる。ジョブとプロセスについては下記が詳しい。
kill関連コマンド
killコマンドに関連して、プロセスやジョブに関係したコマンドを紹介する。
killallコマンド
プロセスIDではなく、プロセス名でも終了させることができるコマンドだ。使い方はkillコマンドと同じだが、便利だ。
psコマンド
現在実行しているプロセスを表示する。
nohupコマンド
ログアウトした後もコマンドを実行し続ける。
まとめ
killコマンドはLinuxユーザであれば知っておきたいコマンドだ。
プロセスを実行したユーザーがコマンドの実行を終了するには、ctrl+Cのショートカットキーで終了することもできるのでこちらも押さえておこう。
コメント