意外と便利なコマンド「kill」

【連載】

にわか管理者のためのLinux運用入門

【第98回】意外と便利なコマンド「kill」

[2017/10/31 09:55]後藤大地 ブックマーク ブックマーク

サーバ/ストレージ

プロセスを終了させることができるコマンドに、killコマンドがある。このコマンドは正確に言うとプロセスを終了させるのではなく、プロセスにシグナルを送信するためのコマンドだ。シグナルのなかに「プロセスの終了」や「強制終了」を実行するものがあり、実際それらの用途で使われることが多く、コマンド名も「kill」なので、そういった誤解が生じるのは当然かもしれない。今回はこのコマンド「kill」について説明しよう。

killコマンドの用途

killコマンドにはいくつか使い方があるのだが、代表的なのは「kill プロセスID」または「kill -9 プロセスID」といった使い方だろう。前者はプロセスの終了、後者はプロセスの強制終了だ。終了対象となるプロセスIDは、psコマンドなどを使って調べることになる。

killコマンドは、問題を起こしたプロセスを終了させるために利用する。とは言え、広く一般的に使われているサーバを特に拡張機能も使ったりせずに運用している限り、サーバが暴走することはあまりない。さらに、暴走したプロセスはどこかのタイミングでカーネルによって終了されることが多いので、そうした用途で明示的にkillコマンドを使うことはないかもしれない。

どちらかと言えば、killコマンドはGUIアプリケーションの強制終了目的で使うことが多いように思う。Google Chromeをはじめ、現在の主要ブラウザはマルチプロセスアーキテクチャを採用しており、1つのアプリケーションが複数のプロセスで構成されている。そのため、どれが1つのプロセスに問題が発生すると、一見終了したように見えるにもかかわらず実際にはアプリケーションが終了しておらず、アプリケーションを新しく起動することができないといった状況に陥ることがある。

例えば、macOSでGoogle ChromeやFirefoxを使っているとしよう。既にこれらブラウザは終了済みで、次に使いたいタイミングで起動するものとする。しかし、実際には終了すべきプロセスが終了せずにいて、新しく起動できないといったことがある。プラグイン関連のプロセスが終了できていないなど、よくあるケースだ。

こうした状態になるとGUIからはどうにもできず(やろうと思えばできなくもないが)、途方に暮れることになる。結局、システムを再起動して問題の解決を図るわけだが、使っているシステムをいったん終了して、もう1度元に戻すというのは面倒だ。できれば避けたい。

そこで、killコマンドが使えると便利だ。例えば、Firefoxの挙動がおかしくなったとする。まずは、psコマンドで次のようにFirefox関連のプロセスを一覧表示させよう。

Firefoxのプロセスを調べたところ

上記の出力から、Firefox関連のプロセスのプロセスIDが67381、67456、67464、67488であることがわかる。この場合「kill -9 67381 67456 67464 67488」のようにkillコマンドを実行すれば、Firefox関連のプロセスを強制終了させることができる。終了後、もう一度psコマンドでプロセス一覧を表示させてみると、確実に終了したことを確認できるはずだ。

Firefox関連のプロセスが終了していることを確認

killコマンドで強制終了を試みてもプロセスが一向に終了する気配がないという場合、カーネルのなかで問題が発生している可能性がある。その場合、いくらkillコマンドを実行してもどうにもならないことが多い。タイムアウトのある処理であれば戻ってくる可能性もあるが、そのままどうにもならない場合にはリセットスイッチ的な仕組みでシステムを強制再起動することになるだろう。

このほかの用途では、サーバなどに設定ファイルの再読み込みをさせるといった目的でkillコマンドが使われることもある。対応しているサーバに限定されるが、killコマンドで設定ファイルの再読み込みを実施させるシグナルをサーバプロセスに送信することができる。

ただし現在、そうした目的ではserviceコマンドやsystemctlコマンドを使うのが一般的だ。直接killコマンドを実行して設定ファイルの再読み込みを行わせることは少ないと思うが、そういったことができるということは知っておいていただきたい。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
3210
2
【連載】にわか管理者のためのLinux運用入門 [98] 意外と便利なコマンド「kill」
プロセスを終了させることができるコマンドに、killコマンドがある。このコマンドは正確に言うとプロセスを終了させるのではなく、プロセスにシグナルを送信するためのコマンドだ。今回はこのコマンド「kill」を紹介しよう。
https://news.mynavi.jp/itsearch/assets_c/2017/10/Linu98_002-thumb-350xauto-15171.jpg
プロセスを終了させることができるコマンドに、killコマンドがある。このコマンドは正確に言うとプロセスを終了させるのではなく、プロセスにシグナルを送信するためのコマンドだ。今回はこのコマンド「kill」を紹介しよう。

会員登録(無料)

セキュリティ・キャンプ2017 - 精彩を放つ若き人材の『今』に迫る
ぼくらのディープラーニング戦争
クラウドアンケート
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
人事・経理・総務で役立つ! バックオフィス系ソリューション&解説/事例記事まとめ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る