「シグナル」を送ってみよう“応用力”をつけるためのLinux再入門(17)(1/2 ページ)

前回は、シグナルについて、シェルでのキー操作を通じて確認しました。今回は、killコマンド/killallコマンドを使って、動作中のプロセスにシグナルを送ってみましょう。

» 2017年08月10日 05時00分 公開
[西村めぐみ@IT]
「“応用力”をつけるためのLinux再入門」のインデックス

連載目次

シグナルとkill/killallコマンドの関係

 何らかの理由で終了させることができなくなった「プロセス」は、kill」コマンドや「killall」コマンドで終了させることができます。また、killallコマンドは、キー入力などを受け付けないサーバプロセスを終了させたり、再起動させたりする際にも使用します。

 killコマンド/killallコマンドは、動作中のプロセスに対して「シグナル」を送信するコマンドです。プロセスの終了には「TERMシグナル(SIGTREM)」や「KILLシグナル(SIGKILL)」を、サーバプロセスの終了/再起動には「HUPシグナル(SIGHUP)」を送信します。

 なお、killコマンドは実行時に「プロセスID」を指定するのに対し、killallコマンドは対象の「プロセス名」を指定します。この他、プロセス名を指定してシグナルを送信するコマンドには「pkill」があります。

 なお、シグナルには以下のようなものがあります。本連載第16回でも紹介しているので、そちらも参照してください。

●主なシグナル
名前 番号 意味
SIGINT 2 キーボードからの割り込みシグナル(通常は[CTRL]+[C])
SIGKILL 9 強制終了シグナル(KILLシグナル)
SIGPIPE 13 読み手のいないパイプへの書き込み
(通常はこのシグナルを受け取ると即時終了する)
SIGCONT 18 一時停止しているジョブへの再開シグナル
SIGSTOP 19 一時停止シグナル
SIGTSTP 20 端末からの一時停止シグナル(通常は[CTRL]+[Z])

シグナルの送信を試してみよう(1)

 それでは、端末アプリケーションを2つ使って、シグナルの送信を試してみましょう。片方の端末では、前回同様「ping localhost」を実行しています。コマンドの実行内容には特に意味はなく、“1秒間隔で何かを出力し続ける”“[CTRL]+[C]で終了する”というコマンドとして使用しています。

 もう片方の端末では「ps -a -O stat」でプロセスの状態を表示しています。「-a」は他の端末の情報も表示するオプション、「-O stat」は表示に「STAT(状態)」を加えるオプションです。こちらの端末では、「ps」コマンドに続いて、killallコマンドで実行中のpingコマンドにシグナルを送っています。

 killallコマンドで「SIGTERM(終了)」以外のシグナルを送るには、「-シグナル名」を指定します(画面1)。さらに、シグナル名の“SIG”は省略できるので、例えば「SIGSTOP」であれば「killall -STOP コマンド名」と指定することができます。

画面1 画面1 killallコマンドで停止、再開、終了のシグナルを送信した

 なお、画面1内の緑色で表示されている「S」は、割り込み可能なスリープ状態を示します。一瞬実行されて、その後は入力待ちのようなコマンドはこのように表示されます。また、フォアグラウンドで実行されている場合は「」も表示されます。

 pingコマンドを実行している端末は、以下の画面2のようになっています。

画面2 画面2 pingコマンドを実行している端末の画面。前出の画面1を実行しているときの様子

 画面2のpingコマンドはバックグラウンドで停止していたため、最後の「Terminated」の部分は次のコマンドを実行すると表示されます(この実行画面では[Enter]キーを入力して表示)。

 なお、pingコマンドの場合、SIGINT([CTRL]+[C])で終了すると、最後に「統計情報(statistics)」が出力されます。従って、「killall ping」(SIGTERMを送信)で終了した場合と、「killall -SIGINT ping」で終了した場合は表示が変わります(画面3)。

画面3 画面3 「killall ping」と「killall -SIGINT ping」での終了の違い。それぞれ別の端末で「ping localhost」を実行した状態で終了させた
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。