【kill】プロセスを安全かつ速やかに終了させる方法 killのシグナルを理解する【Linuxコマンド入門 Part3-5】

今回はkillコマンドの基本の使い方から便利なオプションについて紹介します。

「プログラムが暴走して止まらない」

「フリーズした」

「前の実行の残骸を綺麗にしたい」

そんな時は、killコマンドタスクキル(プロセスキル)できます。

また、kill という名前ですが、実は『殺す』だけでなく『一時停止』や『設定読み込み』の合図も送れる、多機能なリモコンのようなコマンドであったりします。その動作の仕組みについても解説していきます。

(終了させるには、まず相手(PID)を知る必要があります。PIDの調べ方は前回の記事(psコマンド)を見てね。)

psコマンドの使い方紹介、Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介しています。

【ps】PIDを確認する方法。killコマンドなどでプロセス特定に必要です。【Linuxコマンド入門 Part3-4】

psコマンドの基本、基本動作.と使い方についておすすめのオプションとよく使うものを優先的に紹介します。プロセス管理の基本をマスターしましょう。

killコマンドの使い方紹介、Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介しています。

kill コマンド

基礎的な使い方:PIDを指定して終了させる

使い方は、以下のようにターミナルに打ち込むだけです。

kill [PID]

ps で調べた番号を入れてプロセスを指定します。

(デフォルトのシグナルは -15:SIGTERMです。シグナルについては後述)

-9 強制的にタスクキル

基本的には、kill [PID]でタスクキルできますが、実行してもタスクが生き残って、タスクキルできない場合があります。

そんな時は、 -9 (シグナル:SIGKILL)をつけて実行するとより強制的にタスクキルできます。

強制終了させる

kill -9 [PID]
killコマンドはキルしてない?!シグナルとは?

kill コマンドは「〇す」という物騒な名前ですが、実際は「シグナル(合図)を送る」コマンドです。なので、killの直訳的な意味よりはプロセスの状態を操作するリモコンみたいなイメージが実態に近いと思います。

シグナルによって、どのレベルでタスクキル要請をしているかを指定しています。-9とデフォルトの-15は以下の様な感じです。

オプションシグナル名意味例え話推奨度
なし (デフォルト)SIGTERM (-15)終了要請「すみませんが、作業を終えて退室してください」
→ プログラムはログを保存したり、ファイルを閉じたりして、行儀よく終了できる。
まずはこれ
-9SIGKILL強制終了「問答無用!首根っこ掴んでつまみ出す」
→ 後片付けをする暇を与えず、即座に消す。データ破損のリスクが少しある。
最終手段

これを見ると、killコマンド自体は、プロセスをkillしているわけではなく、プロセス自体の終了処理を呼び出す信号をわたしている。シグナルを出すだけのコマンドであることがわかりますね。

-l 使えるオプション一覧を見る

killコマンドの引数の数字は環境によってとれる値が変わるので、確実にあるであろう-9については紹介しましたが、他の引数を持つこともできます。大体-64とかくらいまでならあるはずです。

killコマンドで使えるオプション一覧を知りたいときは -lオプションをつけて実行すると表示してくれます。

オプション一覧を見る

kill -l

実行結果:windows ubuntu仮想環境の時

$kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

killコマンドのちょっと便利なオプション5選

kill -l で確認するといっぱい出てきます。

このうち、ちょっと使えるかもというオプションについて紹介します。

1. -1 (SIGHUP):設定ファイルの再読み込み

kill -1 [PID]
  • 意味: “Hang Up”(電話を切る)の名残です。
  • 現代での用途: 「プロセスを終了させずに、設定ファイルだけ読み直させる」 という用途で非常によく使われます。

使いたい場面

 Webサーバー(NginxやApache)の設定を書き換えた後、再起動(停止)させずに設定を反映させたい時に使えます

サーバーを止められない本番環境でのメンテテクニックですね。

2. -19 (SIGSTOP) & -18 (SIGCONT):一時停止と再開

これは非常に直感的で面白い機能です。

アプリの『一時停止ボタン』を強制的に押す裏技です。

 AI学習や動画エンコードなど重たいし時間のかかる処理中だが、別作業をどうしてもしたい時、終了してしまったら、やり直しになってしまうので、一旦停止したいというときに使えます。

-19 プロセスを一時停止する

kill -1 [PID]

-18 プロセスを再開する

kill -18 [PID]
  • -19 (SIGSTOP): プロセスを「一時停止」させます(メモリ上に残したまま凍結)。
  • -18 (SIGCONT): 停止しているプロセスを「再開(Continue)」させます。

使いたい場面

「重い処理(AIの学習など)を回しているが、ちょっとZoom会議をするから、その間だけPCを軽くしたい!でも終了させると最初からやり直しになる…」という時に最強です。

3. -2 (SIGINT):Ctrl+C と同じ

kill -2 [PID]
  • 意味: “Interrupt”(割り込み)。
  • 用途: ターミナルで Ctrl + C を押すのと同じ効果を、別のターミナルから送れます。

「キーボードで中断したのと同じ扱い」でkillできます。

使いたい場面

-15(デフォルト)と何が違うの?と思うと思います。これは明示的にユーザの入力で停止したことを伝えることで、終了時の集計処理を行ってもらうために使えたりします。

pythonでは、try…except文でエラーハンドリングしますが、もし、-15(デフォルト)で終了すると、このエラーにハンドリングされずに終了してしまいます。 

例えば、AIの学習プログラムで、epochループ中もし外部入力(cnrl + C)で終了したら、try…exceptで分岐して、今のところの学習結果を保存するといった処理を実装していたとします。このとき、-15だとハンドリングをすり抜けて終了してしまいますが、-2をつけていれば“KeyboardInterrupt”をキャッチして確実に実行できます。また、&をつけて実行したり、nohupなどをつかってバックグラウンドで起動してしまい (cnrl + C)を入力できないときなどにも使えます。

 一部のCUIツールでは、ユーザーの入力で終了したら、今のところの集計を出力してくれたりするので、これを実行してほしいときなどにも使えます。(pingを裏で走らせていた時など)

4. -0:生存確認(ちょっと玄人向け)

kill -0 [PID]
  • 意味: 実はシグナルを送りません
  • 用途: 「そのPIDが存在するかどうか(生きてるか)」のエラーチェックだけを行います。
    • プロセスがいれば何も起きず(終了ステータス0)、いなければエラーが出ます。

使いたい場面

シェルスクリプトを書く時、別プロセスが動いているか確認しておくとエラーが出ず便利です。そんな時に使えるオプションになります。ちょっと玄人向けです。

pkill / killall コマンド:プロセス名でまとめて終了

ここまでは、標準のPIDを指定してkillするkillコマンドについて紹介しました。

killコマンドは明示的に指定できるので、確実かつ安全ですが、サクッとkillしたい時などは毎回PIDをpsで確認するのは面倒です。pkillコマンドkillallコマンドであれば、いちいち検索してPIDを探さなくてもタスクキルできます。ただし使用にあたり注意点もあるので、それを気に留めて使う必要があります。

pkill [コマンド名]:コマンド名を指定して全部kill

使い方は、以下のようにターミナルに打ち込むだけです。

コマンド名を(一部でも)一致でkill

pkill [コマンド名]

実行例

pythonのプロセスをkillする。

tukumo-master~$ps
    PID TTY          TIME CMD
    295 pts/0    00:00:00 bash
    823 pts/0    00:00:00 python3
    826 pts/0    00:00:00 python
    839 pts/0    00:00:00 ps
tukumo-master~$pkill python
tukumo-master~$ps
    PID TTY          TIME CMD
    295 pts/0    00:00:00 bash
    841 pts/0    00:00:00 ps
[1]+  Terminated              python3 test/sample_multi.py
[2]+  Terminated              python  test/dummy.py

注意点

 pkillはコマンド名が一部でも一致しているものすべてkillするので、pkill python と実行すると、別プロセスでpython3が動いていたらそちらのプロセスも全部killしてしまいます。

極端に言うと pkill py を実行するとpydoc とか pycharmなども巻き添えに全部killします。

killall [コマンド名]:コマンド名を指定して全部kill

pkillよりは少し厳密です。コマンドが完全一致するもののみkillします。

コマンド名を完全一致でkill

killall [コマンド名]

実行例

python3のプロセスをkillする。

$ps
    PID TTY          TIME CMD
    295 pts/0    00:00:00 bash
    844 pts/0    00:00:00 python
    848 pts/0    00:00:00 python
    852 pts/0    00:00:00 python3
    856 pts/0    00:00:00 python3
    882 pts/0    00:00:00 ps
tukumo-master~$killall python3
tukumo-master~$ps
    PID TTY          TIME CMD
    295 pts/0    00:00:00 bash
    844 pts/0    00:00:00 python
    848 pts/0    00:00:00 python
    894 pts/0    00:00:00 ps
[1]-  Terminated              python3 test/sample_multi.py
[2]+  Terminated              python3 test/sample_multi.py

注意点

 killallはコマンド名が完全一致しているものすべてkillするので、pkill よりは厳密ですが、別のpython3が動いていたらそちらもkillしてしまうので、(これを言ったら元も子もないですが、) ps aux | grep python などで別のプロセスが動いてないか確認してから実行したほうが安心です。

確実に別プロセスが動いていないとき(テスト環境など)には便利です。

まとめ

プロセスを終了させるkillコマンドについて紹介しました。

  • kill [PID]:プロセスへ終了要求をするコマンド
  • kill -9 [PID] :プロセスを強制終了
  • kill –1 [PID] :プロセスを終了せずに設定などを再読み込み
  • kill –19 [PID] :プロセスを一時停止
  • kill –18 [PID] :プロセスを再開
  • pkill [コマンド名]:コマンド名に(一部でも)一致するプロセスを終了
  • killall [コマンド名]:コマンド名に完全一致するプロセスを終了

今回までの、第1回から第5回まででシステムとプロセス管理については一通り紹介できたので、

次回からは、ディスクの使用量について詳しく見るdfコマンドについて解説します。

関連記事は、2026年1月17日に公開予定 (あと1日)

第三回”Linuxコマンド入門 Part3 ~システムの状態確認とネットワークの基本~”では、linuxでどのようにCPUやメモリの状態を確認するか、ネットワークとの接続チェックなどの基本操作を解説しています。

linuxコマンドでシステムのメモリやCPUの状態、プロセスの詳細を確認する方法を紹介するシリーズのサムネイル 6 記事
シリーズ

Linuxコマンド入門 Part3 ~システムの状態確認とネットワークの基本~

Linuxのシステム管理コマンドや基本的なネットワーク関係コマンドを理解しよう。

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero