kill

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

kill(キル)は、UNIXUnixけいオペレーティングシステムにおいて、システムじょう動作どうさしているプロセス簡単かんたんなメッセージをおくるコマンドである。

概説がいせつ[編集へんしゅう]

デフォルトでおくるメッセージは、終了しゅうりょう(termination)シグナルであり、プロセスに終了しゅうりょう(exit)することを要求ようきゅうする。しかし、killすこあやまった名称めいしょうである。おくられるシグナルは、プロセスの終了しゅうりょうとは無関係むかんけい場合ばあいがある。killコマンドは kill()システムコールラッパーであり、数字すうじプロセス識別子しきべつし(PID)で指示しじされたプロセスや、プロセスグループ識別子しきべつし(PGID)で指示しじされたプロセスグループに、シグナルおくる。killむかしからスタンドアロンのユーティリティとして提供ていきょうされているが、おおくのシェルはわずかにことなるビルトインのkillコマンドをっている。

ユーザが通常つうじょうもっと利用りようするシグナルはSIGTERMSIGKILLであるが、killおおくのことなるシグナルをおくることも可能かのうである(シグナル全体ぜんたいのリストはシグナル参照さんしょう)。デフォルトでおくられるシグナルはSIGTERMである。このシグナルをあつかうプログラムは、プログラムを終了しゅうりょうするまえに、やくつクリーンアップの処理しょり構成こうせい情報じょうほうをファイルに保存ほぞんするなど)をおこなうことが出来できる。しかし、おおくのプログラムはこのシグナルにたいして特別とくべつなハンドラを実装じっそうしておらず、デフォルトシグナルハンドラがわりにばれる。ときには、特別とくべつなハンドラをつプロセスでさえ、シグナルをただしく処理しょりしていないことがある。

SIGKILLSIGSTOP以外いがいすべてのシグナルは、プロセスによって横取よこどりすることが出来できる。これは、プログラムがシグナルを受信じゅしんしたときに、特別とくべつ関数かんすうせることを意味いみしている。ふたつの例外れいがいのSIGKILLとSIGSTOPは、ホストシステムのカーネルだけが処理しょりおこない、プロセス実行じっこうのコントロールについて信頼しんらいできる方法ほうほう提供ていきょうしている。SIGKILLはプロセスを終了しゅうりょうさせる。SIGSTOPは、SIGCONTをけるまでのあいだ、プロセスを中断ちゅうだんさせる。

UNIXは、権限けんげんのないユーザがのプロセスを終了しゅうりょうさせることを防止ぼうしするため、セキュリティの機構きこう提供ていきょうしている。基本きほんてきには、あるプロセスがべつのプロセスにシグナルをおくるとき、シグナルをおくるプロセスの所有しょゆうしゃは、シグナルをけるプロセスの所有しょゆうしゃおなじか、スーパーユーザーであることがもとめられる。

利用りよう可能かのうなシグナルはすべことなる名前なまえち、特定とくてい数字すうじにマッピングされている。UNIXの実装じっそうによって、数字すうじとシグナルのマッピングがことなることに注意ちゅういする必要ひつようがある。SIGTERMはおおくの場合ばあい15であり、SIGKILLはおおくの場合ばあい9である。

れい[編集へんしゅう]

プロセスにたいして以下いかの3つの方法ほうほうでSIGTERMシグナルをおくることができる(この場合ばあいはプロセスIDは'1234' である):

  • kill 1234
  • kill -TERM 1234
  • kill -15 1234

また、プロセスにたいして以下いかの2つの方法ほうほうでSIGKILLシグナルをおくることができる:

  • kill -KILL 1234
  • kill -9 1234

有用ゆうようなシグナルには、HUP、TRAP、INT、ALRMとうがある。SIGINTシグナルは、おおくのシェルで、単純たんじゅんCTRL+Cすことで発生はっせいさせることができる。一般いっぱんてきに、CTRL+ZSIGTSTPに、 CTRL+\ (バックスラッシュ) がSIGQUITてられている。SIGQUITはプログラムにコアダンプおこなわせることが出来できる。

関連かんれんするプログラム[編集へんしゅう]

  • killall - SolarisひとしのいくつかのUNIXけいOSでは、システムのシャットダウン過程かていでこのユーティリティが自動的じどうてき起動きどうされる。これは、上記じょうきのkillコマンドのようなはたらきをおこなうが、特定とくていのプロセスにシグナルをおくるのではなく、システムのすべてのプロセスにシグナルをおくる。しかし、IRIXLinuxFreeBSDのようなほかのシステムでは、終了しゅうりょうさせるプロセスの名前なまえ指定していするためのパラメータを使用しようする。たとえば、xmmsによって起動きどうされたXMMS音楽おんがくプレーヤを終了しゅうりょうさせるために、killall xmmsというコマンドが使用しようされる。これはxmmsという名前なまえすべてのプロセスを終了しゅうりょうさせる。
  • pkill - これは、名前なまえ属性ぞくせいもとづいて、プロセスにシグナルをおくる。Solaris 7で導入どうにゅうされ、LinuxとOpenBSDさい実装じっそうされた。pkillは、終了しゅうりょうさせるプロセスをより便利べんり名前なまえ基準きじゅん指定していできる。たとえば、pkillを使用しようせずに(また、pgrep使用しようせずに)、firefoxという名前なまえのプロセスを終了しゅうりょうさせる場合ばあいは、kill `ps -ax | grep firefox | grep -v grep | awk '{print $1}'`をタイプする必要ひつようがある。pkillが使用しようできる場合ばあいは、単純たんじゅんpkill firefoxとタイプするだけよい。

Windows[編集へんしゅう]

Microsoft Windows XPMicrosoft Windows Vistaには、プロセスを終了しゅうりょうさせるためのtaskkillコマンド[1]がある。また、サポートばんのkillが、Windows NT 3.x, NT 4.0, Windows 2000, Microsoft Windows Server 2003けのMicrosoft Windows Resource Kits(または"RezKits")にふくまれていた。バージョン3.5のkill(Copyright (C) 1994 Microsoft Corp.)がもっと有用ゆうようであった。GNUバージョンのkillは、Cygwinによって移植いしょくされ、Microsoft Windows Services for UNIX[2]提供ていきょうするUNIX OSレイヤちゅう動作どうさした。(マイクロソフトは1999ねん9がつ17にちに、Softway Systemsしゃ同社どうしゃInterix製品せいひん買収ばいしゅうすることで、Microsoft Windows Services for UNIXをれた。)

killは、Win32の世界せかいのスレッドと実行じっこう形式けいしき個別こべつ管理かんりに、待望たいぼうされたつぶ提供ていきょうした。しかし実質じっしつてきには、どのkillの派生はせいばんも(POSIX世界せかいから移植いしょくされたものも、模倣もほうしたりスクラッチからつくられたものも)、競合きょうごうするUnixのような、実行じっこうちゅうのウィンドウズのプロセスにたいする完全かんぜん機能きのうがなく、根本こんぽんてき制御せいぎょおこなえなかった。

Plan 9[編集へんしゅう]

Plan 9において、killプログラムは実際じっさいには終了しゅうりょう動作どうさをせず、プロセスIDも使用しようしない。むしろ、プロセスの実際じっさい名前なまえ使用しようし、プロセスを終了しゅうりょうさせるために、Plan 9のシェルであるrcたいするコマンドを出力しゅつりょくする。たとえば、実行じっこうちゅうtroffすべ終了しゅうりょうさせるときは、以下いかのようにタイプする。

kill troff | rc

slayとばれる類似るいじのコマンドが提供ていきょうされている。この方法ほうほう終了しゅうりょうされることを拒否きょひするプロセス以外いがいたいしてはおな動作どうさである。

関連かんれん項目こうもく[編集へんしゅう]

参照さんしょう[編集へんしゅう]

外部がいぶリンク[編集へんしゅう]

  • killコマンド - Linuxマニュアル(英語えいご
  • kill(1) コマンド man page(SunOS リファレンスマニュアル)
  • kill(1) コマンド man page(HP-UX リファレンス)
  • killシステムコール - Linuxマニュアル(英語えいご
  • kill(2) システム・コール man page(Solaris 10 Reference Manual Collection)(英語えいご
  • kill(2) システム・コール man page(HP-UX リファレンス)