killコマンドの使い方:プロセスにシグナルを送る

killは、プロセスにシグナルを送るコマンドです。名前は「殺す」ですが、実際には終了の依頼や再読み込みの指示など、さまざまなシグナルを送れます。動かなくなったプログラムを止めるときに使います。

killのよく使う形

実務や学習で登場しやすい使い方を、そのまま入力できる形でまとめました。

コマンド例内容
kill 1234PID 1234に終了を依頼(SIGTERM。既定)
kill -9 1234強制終了(SIGKILL)
kill -HUP 1234設定の再読み込みを依頼(対応しているプロセスのみ)
kill -l使えるシグナルの一覧を表示
pkill nginx名前を指定してシグナルを送る
kill $(pgrep -f myapp)名前で探したPIDにシグナルを送る

killの主なオプション

オプション意味
(既定でSIGTERM=15)
-9SIGKILLで強制終了
-1SIGHUPで再読み込み要求
-l利用可能なシグナル一覧を表示

killの実行例と結果の読み方

user@linux-study:~$ kill -9 1050
user@linux-study:~$ ps aux | grep 1050
(プロセスが一覧から消える)

kill -9 1050で、PID(プロセスID)が1050のプロセスに強制終了のシグナルを送っています。-9を付けない場合は穏やかな終了シグナル(SIGTERM)が送られます。

練習用ターミナルでは、killをブラウザ上で安全に試せます。

killを使うときの注意点

まずはkill PID(SIGTERM)で、プロセス自身に後片付けをさせながら終了を依頼するのが基本です。kill -9はプロセスが何もできないまま即座に消されるため、一時ファイルやロックが残る場合があります。最後の手段にしましょう。

他のユーザーのプロセスにシグナルを送るには、sudoが必要です。PIDを取り違えると別のプロセスを止めてしまうため、psで必ず対象を確かめてから実行します。

killに関するよくある質問

kill -9でも止まらないことはありますか?

あります。ディスクI/O待ち(STATがD)のプロセスや、ゾンビプロセスは、kill -9でも終了しないことがあります。

サービスはkillで止めてよいですか?

systemdで管理しているサービスは、systemctl stopで停止するのが基本です。killで止めても、自動で再起動する設定の場合があります。

関連ページ

あわせて覚えたいコマンド:ps・top・systemctl・pgrep

killが登場する章:初級 第7章

← Linuxコマンド一覧へ戻る