killコマンドの使い方:プロセスにシグナルを送る
killは、プロセスにシグナルを送るコマンドです。名前は「殺す」ですが、実際には終了の依頼や再読み込みの指示など、さまざまなシグナルを送れます。動かなくなったプログラムを止めるときに使います。
killのよく使う形
実務や学習で登場しやすい使い方を、そのまま入力できる形でまとめました。
| コマンド例 | 内容 |
|---|---|
kill 1234 | PID 1234に終了を依頼(SIGTERM。既定) |
kill -9 1234 | 強制終了(SIGKILL) |
kill -HUP 1234 | 設定の再読み込みを依頼(対応しているプロセスのみ) |
kill -l | 使えるシグナルの一覧を表示 |
pkill nginx | 名前を指定してシグナルを送る |
kill $(pgrep -f myapp) | 名前で探したPIDにシグナルを送る |
killの主なオプション
| オプション | 意味 |
|---|---|
| (既定でSIGTERM=15) | |
-9 | SIGKILLで強制終了 |
-1 | SIGHUPで再読み込み要求 |
-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章