検索
連載

killコマンド/killallコマンド――実行中のプロセスを終了させるLinux基本コマンドTips(8)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、「kill」コマンドと「killall」コマンドです。

Share
Tweet
LINE
Hatena
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、実行中のプロセスを終了させるのに使用する「kill」コマンドと「killall」コマンドです。

killコマンドとは?

 プロセスを強制終了させることを“プロセスを殺す”と表現することがあります。killはその名の通り、実行中のプロセスを終了させる場合に使うコマンドです。

 どのプロセスを終了させるかは、「プロセスID」で指定します。例えば、100番のプロセスならば「kill 100」と指定します。プロセスIDはps」コマンドで調べることができます。

killコマンドの書式

kill [オプション] プロセスID

※[ ]は省略可能な引数を示しています



killコマンドの主なオプション

 killコマンドの主なオプションは次の通りです。

オプション 意味
-s シグナル プロセスに送るシグナル名または番号。-シグナル名、-番号でも指定可能(「シグナルとは」を参照)
-l シグナル名のリストを表示する

killallコマンドとは?

 killコマンドと同じく、killallもプロセスを終了させることができるコマンドです。killはプロセスIDでプロセスを指定するのに対し、killallは「プロセスの名前」を指定することができます。この場合、該当する名前のプロセスが“全て殺される”ことになります。

killallコマンドの書式

killall [オプション] プロセス名

※[ ]は省略可能な引数を示しています



killallコマンドの主なオプション

 killallコマンドの主なオプションは次の通りです。

短いオプション 長いオプション 意味
-s シグナル --signal シグナル プロセスに送るシグナル名または番号。-シグナル名、-番号でも指定可能(「シグナルとは」を参照)
-l --list シグナル名のリストを表示する
-i --interactive シグナルを送る前に確認する
-v --verbose シグナルの送信に成功したらメッセージを表示する
-q --quiet 対象となるプロセスがなかった場合もメッセージを表示しない
-I --ignore-case 名前の大小文字を区別しない
-r --regexp 名前を正規表現で指定する
-e --exact 長い名前でも完全一致しないとシグナルを送らない
-g --process-group 指定したプロセスが所属しているグループにシグナルを送る
-y 時間 --younger-than 時間 指定時間より新しいプロセスにシグナルを送る
-o 時間 --older-than 時刻 指定時刻より古いプロセスにシグナルを送る(「時間を指定してプロセスを終了させるには」を参照)
-u ユーザー --user ユーザー 指定したユーザーのプロセスにだけシグナルを送る


killコマンドでプロセスIDを指定してプロセスを終了させる

 「kill プロセスID」で、指定したプロセスを終了させることができます。プロセスIDはps」コマンドで確認できます(画面1)。

コマンド実行例

kill プロセスID

(管理者権限で実行する必要があります)


画面1
画面1 「ps」コマンドでプロセスIDを確認し、「su」コマンドでスーパーユーザー(root)になり、「kill」コマンドでプロセスを終了させた(「sudo」コマンドを使い「sudo kill プロセスID」を実行してもよい)

 killコマンドを使うと、何らかの原因で終了できなくなったプロセスを強制的に終了させることができます。キーボードやマウスからの入力を受け付けなくなった状態でも、“他の端末からログインして終了処理を行う”といったことができます(※)。

【※】“他の端末”を持っていない場合も、[Alt]+ファンクションキー、または[Alt]+[Ctrl]+ファンクションキーで切り替えられる場合があります。





killallコマンドで名前を指定してプロセスを終了させる

 「killall 名前」で、“名前”に指定したプロセスを終了させることができます。killコマンドと違い、killallコマンドは一般ユーザーで実行することができます(画面2)。ただし、一般ユーザーで実行した場合は、自分が起動したプロセスのみが対象となります。

コマンド実行例

killall 名前


画面2
画面2 「killall cat」で「cat」というプロセスを全て終了させる(前後のpsコマンドは動作確認用)


シグナルとは

 killコマンドとkillallコマンドは、プロセスに“シグナル”を送るコマンドです。

 例えば、実行中のコマンドがなかなか終了しない場合には、[Ctrl]+[C]キーを押して強制終了させることがあります。実は、[Ctrl]+[C]キーを押すと、「INT」というシグナルがプロセスに送られています。

 killコマンドやkillallコマンドが送っているのは「TERM」というシグナルで、「Terminate」つまり「終了しなさいという信号を送っている」という意味になります。

 他のシグナルを送りたいときは「kill -HUP プロセスID」のように、オプションでシグナルの略称を指定します。ちなみに「HUP」はもともとハングアップ(回線切断)の信号で、端末を使用するプロセスはこのシグナルを受け取ると終了します。メモリに常駐するタイプのプロセスはHUPシグナルを受け取ると再起動するので、サーバプロセスに対して設定を再読込させたい場合や、再起動させたい場合に使われることがあります(※)。

【※】シグナルに対してどのような動作をするかについては、おおむねの方針が存在しますが、実際にどうなっているかはコマンドによって(開発者によって)異なります。



 また、シグナルは数値で指定することもできます。先ほどのHUPであれば「kill -1 プロセスID」のように指定することも可能です。

●主なシグナル
表記 数値 意味
HUP 1 制御している端末/プロセスがハングアップした
INT 2 キーボードからの割り込み命令([Ctrl]+[C]キー)
QUIT 3 キーボードからの中止命令([Ctrl]+[\]キー)
TERM 15 プロセスの終了命令(デフォルト)
KILL 9 プロセスの強制終了命令
STOP 19 プロセスの停止命令([Ctrl]+[Z]キー)
CONT 18 プロセスの再開命令
※「SIGHUP」「SIGINT」のように“SIG”を付ける場合もあります。killコマンド、killallコマンドはどちらも使用可能です


使用できるシグナルを確認するには

 killコマンドとkillallコマンドで使用可能なシグナル名は、「-l」オプションで確認できます(画面3)。

コマンド実行例

kill -l

killall -l


画面3
画面3 「kill -l」「killall -l」でそれぞれシグナルのリストを表示できる


どうしても終了しないプロセスを“殺す”には

 「kill プロセスID」「killall 名前」で終了できなかったプロセス、つまり、終了命令(TERMシグナル)では終了できなかったようなプロセスでも、他のシグナルでは終わらせることができるかもしれません。

 例えば、「HUPシグナル」は、プロセスを実行したユーザーがログアウトしたのと同じような意味合いなので、うまくプロセスを終了できることがあります。

 それでも終了しない場合は、問答無用でプロセス終了させる「KILLシグナル」を送ります(画面4)。

コマンド実行例

kill -KILL プロセスID

killall -KILL 名前


画面4
画面4 「killall -KILL 名前」でプロセスを強制終了させた


時間を指定してプロセスを終了させるには

 “起動して1時間以上経過している××というプロセスを終了させたい”、という場合は、「-o」オプション(--older-thanオプション)を使用します(画面5)。逆に、新しいプロセスの場合は「-y」オプション(--younger-thanオプション)を使います。時間の指定方法は「-o」オプションと同じです。

コマンド実行例

killall -o 10m 名前

killall --older-than=10m 名前


画面5
画面5 「killall -o 10m cat」で起動して10分以上立つ「cat」コマンドを終了させた(どのプロセスに効いたか分かりやすくするために、「-i」オプションと「-v」オプションを併用しています)

 時間は数字と記号を使って示します。例えば、10分であれば「10m」のようにします。

●時間を指定する記号
記号 時間単位
s
m
h
d
w
M
y


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.