Linuxを使っていると、動作が止まったアプリケーションや意図しないプロセスを終了させたい場面に出くわすことがあります。そんなときに便利なのが「kill」コマンドです。名前だけ見ると少し物騒ですが、このコマンドはプロセスに対して信号(シグナル)を送るためのもので、単に「終了」だけでなく「一時停止」や「再開」なども可能です。本記事では、killコマンドの基本から応用までを、初心者にもわかりやすく丁寧に解説していきます。
Linuxにおける「kill」コマンドは、指定したプロセスID(PID)にシグナルを送るためのコマンドです。もっともよく使われる用途は、暴走したプログラムや不要なプロセスを終了させることです。
「kill」という言葉から「強制終了」をイメージしがちですが、実はシグナルを送るための汎用的なコマンドであり、必ずしも終了させるためだけのものではありません。プロセスに送るシグナルにはいくつか種類があり、それぞれ異なる意味を持っています。
killコマンドを使う前に、対象のプロセスID(PID)を知る必要があります。PIDを調べるには、次のようなコマンドが便利です。
ps aux | grep プロセス名
たとえば、Firefoxを終了させたい場合は次のようにします。
ps aux | grep firefox
このコマンドの出力にはプロセス情報が表示され、最初の方にPIDが含まれています。それを覚えておいて、次のkillコマンドに渡すという流れです。
また、pgrep
コマンドを使うことで、プロセス名だけでPIDを取得することも可能です。
pgrep firefox
もっともよく使われるのが、次の形式です。
kill PID
このコマンドは、デフォルトで「SIGTERM」(シグナル15)をプロセスに送ります。SIGTERMは「プロセスを正常に終了させてください」というソフトな要求です。
kill 1234
上記では、PID 1234のプロセスにSIGTERMを送っています。
killコマンドでは、さまざまなシグナルを指定できます。主なシグナルとその意味は以下の通りです。
シグナル名 | 番号 | 意味 |
---|---|---|
SIGTERM | 15 | 通常終了の要求 |
SIGKILL | 9 | 強制終了(無視できない) |
SIGSTOP | 19 | 一時停止(中断) |
SIGCONT | 18 | 停止状態からの再開 |
シグナルを明示的に指定するには、-s
オプションまたはシグナル名(または番号)を指定します。
kill -s SIGKILL 1234
# または
kill -9 1234
強制的に終了させたいときには -9
を使うことが多いですが、まずは -15
で試して、うまくいかなかった場合に -9
を使うのが推奨される方法です。
killコマンドを組み合わせて、特定のユーザーが起動したプロセスをすべて終了することも可能です。
pkill -u ユーザー名
または、killall
を使ってプロセス名で一括終了もできます。
killall プロセス名
killall firefox
これにより、すべてのFirefoxプロセスを終了できます。
バックグラウンドで起動したプロセスに対してkillを使いたい場合は、まずジョブ番号を確認します。
jobs
ジョブIDを確認したら、次のようにしてkillできます。
kill %ジョブ番号
例:
kill %1
これは、ジョブ1に対応するプロセスにSIGTERMを送るという意味になります。
sudo kill 1234
killall
やpkill
を使うときは、間違ったプロセス名で重要なプロセスを止めないように注意が必要です。killコマンドは、Linuxでプロセスを管理する上で欠かせないツールです。ただ単に「プロセスを殺す」ためのものではなく、「終了を促す」「一時停止する」「再開する」など、システム運用に柔軟性を与えてくれるコマンドでもあります。
ps
や pgrep
kill
(デフォルトでSIGTERM)kill -9
killall
pkill -u
これらを状況に応じて使い分けることで、より安定してLinuxシステムを運用できます。初心者の方も、ぜひ実際にコマンドを試しながら感覚をつかんでみてください。