1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

article for Qiita advent calendar day7: kill command

Last updated at Posted at 2025-12-06

「kill」コマンドを実行した際、オプション/PIDのような数字をセットで実行する場面に遭遇しました。
この記事にてその数字の正体についてまとめたいと思います。

qiitan7.png

killコマンドとは

killコマンドは、プロセスに対して「シグナル」というOSレベルの通知を送るコマンドです。
「プロセスを killする」という語感からも、「kill=止める・消失させる」といったイメージがあります。

kill コマンドは、実行中のプロセスにシグナル (デフォルトでは SIGTERM シグナル) を送信します。 このコマンドのデフォルトのアクションは、プロセスの通常停止です。 プロセスを停止したい場合は、ProcessID 変数にプロセス ID (PID) を指定します。
『kill コマンド』 --by IBM

シグナルとは

シグナルとは、(通常はソフトウェアによる)割り込みの一種で、プロセスに非同期イベントを通知するために使用されます。
『Linuxシグナル』 --by Northern Illinois University

シグナルとは、何らかの状況に反応してLinuxシステムから生成されるイベントのことです。シグナルは、カーネルからプロセスに、プロセスから別のプロセスに、あるいはプロセスからそのプロセス自体に送信されます。シグナルを受け取ったプロセスが、アクションを実行する場合もあります。
"Signals in prod: dangers and pitfalls" --by Meta

英語でも「シグナル」は「信号・合図」という意味を持つように、コマンドにおいてもプロセスとしての意味を伝えるための存在になっています。

「シグナル」とは、killコマンドの後ろのオプションのポジション部分に記載されますが、すべてのCPUにおいて同じではなく、OSによって若干差異があるようでした。

LDP_man-pagesのサイトには、x86(インテル系CPU), Alpha(かつてのCPU),Parisc(HP系のかつてのCPU)が区別されて表になっていたので、参考にさせていただきました。

Signal x86/ARM/他多数 Alpha/SPARC MIPS PARISC Notes
SIGHUP 1 1 1 1 制御端末の切断(ハングアップ)、仮想端末の終了
SIGINT 2 2 2 2 keybordからの割り込み(Ctrl+C)
SIGQUIT 3 3 3 3 keybordからの中止(Ctrl+\)
SIGILL 4 4 4 4 不正命令(トラップされた場合、リセットされない)
SIGTRAP 5 5 5 5 トレース/ブレークポイント(デバッガ用)
SIGABRT 6 6 6 6 abort(3) による異常終了
SIGIOT 6 6 6 6 SIGABRTと同義(歴史的理由)
SIGBUS 7 10 10 10 バスエラー(プログラミングエラー、またはシステム上のデバイス損傷によって発生すルエラ―)
SIGEMT - 7 7 - エミュレーショントラップ(歴史的)
SIGFPE 8 8 8 8 浮動小数点例外、ゼロ除算
SIGKILL 9 9 9 9 強制終了(捕捉不可)
SIGUSR1 10 30 16 16 ユーザー定義1
SIGSEGV 11 11 11 11 セグメンテーション違反
SIGUSR2 12 31 17 17 ユーザー定義2
SIGPIPE 13 13 13 13 パイプ切断(書き込み先なし)
SIGALRM 14 14 14 14 アラーム(タイマー満了)
SIGTERM 15 15 15 15 kill()からの終了要求シグナル
SIGSTKFLT 16 - - 7 数値例外(古いFPU関連。ほぼ未使用)
SIGCHLD 17 20 18 18 子プロセス終了通知
SIGCLD - - 18 - SIGCHLDと同義(歴史的互換)
SIGCONT 18 19 25 26 停止中プロセスの再開
SIGSTOP 19 17 23 24 強制停止(捕捉不可)
SIGTSTP 20 18 24 25 端末からの停止(Ctrl+Z)
SIGTTIN 21 21 26 27 バックグラウンドプロセスの読み込み試行
SIGTTOU 22 22 27 28 バックグラウンドプロセスの書き込み試行
SIGURG 23 16 21 29 ソケットの緊急データ到着
SIGXCPU 24 24 30 12 CPU時間制限超過
SIGXFSZ 25 25 31 30 ファイルサイズ制限超過
SIGVTALRM 26 26 28 20 仮想タイマー満了
SIGPROF 27 27 29 21 プロファイリングタイマー満了
SIGWINCH 28 28 20 23 ウィンドウサイズ変更
SIGIO 29 23 22 22 非同期I/O通知
SIGPOLL SIGIO と同義
SIGPWR 30 29/- 19 19 電源障害(UPS連携など)
SIGINFO - 29/- - - ステータス要求(BSD系の名残)
SIGLOST - -/29 - - ファイルロック喪失(歴史的。実質未使用)
SIGSYS 31 12 12 31 不正なシステムコール
SIGUNUSED 31 - - 31 旧称。いまは SIGSYS に統合済み

参考にさせていただいたリンク

CPUについての参考

「オプション」?「シグナル」? 〜後ろにつける非PIDの謎の数字の正体〜

下記の「使用例」のように kill -9 1924というコマンドを初見で見た時、「-9」が通常見かけるような「オプション」とは思えませんでした。

使用例
kill -9 1924
『プロセスの表示/操作:プロセスの終了』 --by FUJITSU 技術情報 Technical Park

Linuxのオプションには ls -a find . -name 等、かろうじて意味を持たされていることがわかるものを目にすることが多いと思います。

そして、このkillコマンドkill -9 1924の後ろの意味がなさそうな数字「-9」は前述の表に記載した「シグナル」という存在だったのでした。

kill -9 1924は「PID 1924のプロセスに9番のシグナル(SIGKILL)を送る」という意味になります。

感想

killコマンドで使用するシグナルは限られてくると思いますし、「オプションもシグナルも使えれば名前など問題ない」ということは承知の上なのですが、CPUの制御とも深く関わりのある「シグナル」という存在を知り、オプションのように操作ができることに感銘を受けました。

普段使っている「ctrl + c」なども、シグナルによる制御だったことを知って感慨深くなりました。

killコマンドの用例というよりは、ほぼ「シグナル」の概要になってしまいましたが、「killコマンドはオプションやシグナルで制御・操作できる!」ということも認識できたので、ヨシ!

参考にさせていただいた記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?