キル(コマンド)

殺す
原作者AT&Tベル研究所
開発者さまざまなオープンソースおよび商用開発者
初回リリース1973年2月 (1973-02
オペレーティング·システムUnixUnixライクPlan 9InfernoOS-9WindowsReactOSSingularityIBM i
プラットフォームクロスプラットフォーム
タイプ指示
ライセンスReactOS: LGPL-2.1以降

コンピューティングにおいて、は、実行中のプロセス信号を送信するためにいくつかの一般的なオペレーティング システムで使用されるコマンドkillです。

実装

UnixおよびUnixライク

UnixおよびUnix系オペレーティングシステムでは、プロセスにシグナルを送るために使用されるコマンドkillです。デフォルトでは、送信されるメッセージはプロセスの終了を要求する終了シグナルです。しかし、killという名称はやや不適切です。送信されるシグナルはプロセスの強制終了とは無関係である可能性があります。このコマンドはシステムコールラッパーであり、システム上のプロセスまたはプロセスグループにシグナルを送ります。プロセスまたはプロセスグループには、数値のプロセスID(PID)またはプロセスグループID(PGID)で参照されます。は、 POSIX標準で定義されているように、常にスタンドアロンユーティリティとして提供されます。ただし、ほとんどのシェルには、これと若干異なる組み込みコマンドがあります。 [ 1 ] [ 2 ]killkill()killkill

送信可能なシグナルは多種多様です(完全なリストについてはsignalを参照してください)。しかし、ユーザーが一般的に最も関心を持つシグナルはSIGTERM(「終了」)とSIGKILL(「強制終了」)です。デフォルトで送信されるシグナルはSIGTERMです。このシグナルを処理するプログラムは、終了前に便利なクリーンアップ操作(設定情報をファイルに保存するなど)を実行できます。しかし、多くのプログラムはこのシグナル用の特別なハンドラを実装していないため、代わりにデフォルトのシグナルハンドラが呼び出されます。また、特別なハンドラを持つプロセスであっても、何らかの問題によりシグナルを適切に処理できない場合もあります。

SIGKILLとSIGSTOP (「停止」)を除くすべてのシグナルはプロセスによって「インターセプト」できます。つまり、プログラムがこれらのシグナルを受信した際に特別な関数を呼び出すことができます。SIGKILLとSIGSTOPの2つの例外はホストシステムのカーネルによってのみ認識され、プロセスの実行を制御する信頼性の高い方法を提供します。SIGKILLはプロセスを強制終了し、SIGSTOPはSIGCONT(「継続」)を受信するまでプロセスを一時停止します。[ 3 ]

Unix は、権限のないユーザーが他のプロセスを強制終了するのを防ぐためのセキュリティメカニズムを提供しています。基本的に、プロセスが別のプロセスにシグナルを送信するには、シグナルを送信するプロセスの所有者が受信側のプロセスの所有者と同じか、スーパーユーザーである必要があります。

利用可能なシグナルはすべて異なる名前を持ち、特定の番号にマッピングされています。番号とシグナルの具体的なマッピングは、Unixの実装によって異なります。SIGTERM は通常 15 番、SIGKILL は通常 9 番です。

プロセスにSIGTERMシグナルを送信する方法は 4 つあります (この場合、プロセス ID は「1234」です)。

キル1234キル-s TERM 1234キル-TERM 1234キル-15 1234

プロセスにSIGKILLシグナルを送信する方法は 3 つあります。

殺す-s殺す1234殺す-KILL 1234殺す-9 1234

その他の有用なシグナルには、HUP、TRAP、INT、SEGV、ALRMなどがあります。HUPはSIGHUPシグナルを送信します。ApacheやSendmailなどの一部のデーモンは、SIGHUPを受信すると設定ファイルを再読み込みするため、killコマンドもこの目的に使用できます。SIGINTシグナルは、ほとんどのUnixシェルCTRL+をC押すだけで簡単に生成できます。また、 +はSIGTSTP (「端末停止」)にマッピングされ、+ (バックスラッシュ)はSIGQUITにマッピングされ、プログラムにコアダンプを強制的に実行させることもよくあります。 CTRLZCTRL\

  • killall – Solarisなどの一部の Unix では、システムがシャットダウンしているときにこのユーティリティが自動的に呼び出されます。上記の kill コマンドとほぼ同様に動作しますが、個別のプロセスにシグナルを送る代わりに、システム上のすべてのプロセスにシグナルが送られます。IRIX 、Linux 、FreeBSD などの一部のシステムでは強制終了するプロセス (複数可) の名前を指定する引数が提供されます。たとえば、によって呼び出されたXMMS音楽プレーヤーのインスタンスなどのプロセスを強制終了するにはxmms、ユーザーは コマンド を実行しますkillall xmms。これにより、 という名前のすべてのプロセスが強制終了されxmms、Solaris などのシステムでは と同等になりますkill `pidof xmms`
  • pkill – プロセス名やその他の属性に基づいてプロセスにシグナルを送信します。Solaris 7で導入され、その後Linux、NetBSDOpenBSD向けに再実装されました。pkillを使用すると、プロセス名に基づいてプロセスを強制終了することがはるかに簡単になります。例えば、 pkill(およびpgrep )を使わずにfirefoxというプロセスを強制終了するには、 と入力する必要がありますが、pkillを使えば と入力するだけで済みます。kill `ps --no-headers -C firefox -o pid`pkill firefox
  • xkill – パラメータなしで呼び出すと、マウスカーソルが矢印から「x」アイコンに変わり、ユーザーはウィンドウをクリックすると、Xサーバーがそのウィンドウを所有するクライアントとの接続を強制的に切断できるようになります。これにより、Xサーバーとの接続が切断されたことが検出されると、プロセスが強制終了することがよくあります。これはX11を実行しているシステムでのみ機能します。例えば、Waylandコンポジターでは動作しません。

マイクロウェア OS-9

このkillコマンドはOS-9シェルの組み込みシェルとしても利用可能であり、プロセスIDを指定して別のプロセスを強制終了するために使用されます。[ 4 ]

プロセス ID "7" のプロセスを停止します。

$ キル7 

Microsoft Windows と ReactOS

Microsoft Windowstaskkillのコマンド

Microsoft のコマンドライン インタープリタWindows PowerShellでは、コマンドレットの定義済みコマンド エイリアスkillです。 Stop-Process

Microsoft Windows XPVista7には、プロセスを終了するコマンドtaskkill[ 5 ]が含まれています。このコマンドの通常の構文は[6]です。Windows 98で利用可能なMicrosoft Windowsリソースキットのいくつかのリリースには、taskkill /im "IMAGENAME"の「サポートされていない」バージョンが含まれていました。 [ 7 ]kill

のGNU版はCygwinkill経由で移植され、 Microsoft Windows Services for UNIXが提供するUnix環境サブシステム内で実行されます(Microsoftは1999年9月17日にSoftway SystemsとそのInterix製品を買収することでWindows Services for Unixを買収しました)。[ 7 ]

ReactOStaskkillのコマンド

ReactOS実装はWindows版をベースにしており、Andrew Riedi、Andrew Nguyen、He Yangによって開発されました。LGPLv2.1 以降のライセンスが適用されます。 [ 8 ]

Microsoft によって開発され、10 MB を超えるメモリを使用する、文字 "p" で始まるすべてのプロセスを見つけて終了します。

PS C:\> ps p * | where { $_ . Company -like "Microsoft*" -and $_ . WorkingSet -gt 10MB } | kill -confirm確認この操作を実行してもよろしいですか?ターゲット「powershell (6832)」に対して「Stop-Process」操作を実行しています。[Y] はい [A] すべて「はい」 [N] いいえ [L] すべて「いいえ」 [S] 一時停止 [?] ヘルプ(デフォルトは「Y」): A PS C:\>

以下は、 Explorer.exeプロセスを終了するように要求する、より簡単な例です。

PS C:\> taskkill / im explorer . exe

この例では、プロセスを強制的に終了します。

PS C:\ > taskkill / f / im explorer .exe

プロセスはPID 番号で強制終了することもできます。

PS C:\>タスクキル/ pid 3476

マイクロソフト シンギュラリティ

Microsoft Researchマイクロカーネルオペレーティング システムSingularityの標準シェルであるSingularity シェルにkillは、バックグラウンド プロセスを終了するコマンド が含まれています。

「SampleProcess」という名前のプロセスを停止します。

特異点>サンプルプロセスを強制終了する 

プロセス識別子「42」のプロセスを停止します。

シンギュラリティ>キル42 

ベル研究所のプラン9

ベル研究所のPlan 9では、killプログラムは実際にはこの終了処理を実行せず、プロセスIDも受け取りません。代わりに、プロセスの実際の名前を受け取り、Plan 9で使用されるシェルであるrcにプロセスを強制終了するためのコマンドを出力ます[ 9 ]

同様のコマンドとして がありslay、これは同じことを行いますが、この方法で強制終了できないプロセスに対して実行されます。[ 9 ]

たとえば、troffのすべてのインスタンスを削除するには、次のように入力します。

トロフを殺す | rc 

その他

killコマンドはIBM iオペレーティングシステムにも移植されています。 [ 10 ]

参照

  • 信号
  • xkill
  • キラール
  • ピキル
  • シグナル.h
  • Alt + F4 は、Microsoft Windows アプリケーション/プログラム/ウィンドウを強制終了するコンピュータのキーの組み合わせです。
  • Control-Alt-Deleteなどのコンピュータのキーの組み合わせを使用すると、オペレーティングシステムとバージョンに応じて、アプリを強制終了/強制終了するためのさまざまな手段が表示されます。

参考文献

  1. ^ 「Bashリファレンスマニュアル:ジョブ制御組み込み関数」。GNUプロジェクト。2019年9月18日時点のオリジナルよりアーカイブ。 2015年2月24日閲覧
  2. ^ 「zsh: 17. シェル組み込みコマンド」2015年2月24日時点のオリジナルよりアーカイブ2015年2月24日閲覧。
  3. ^ "<signal.h>" . The Open Group Base Specifications Issue 7. 2015年2月18日時点のオリジナルよりアーカイブ。 2015年2月24日閲覧
  4. ^ポール・S・ダヤン (1992). 『OS-9の達人 - 1:事実』 ギャラクティック・インダストリアル・リミテッド. ISBN 0-9519228-0-7
  5. ^ 「Taskkill」 . Microsoft TechNet . 2018年2月3日時点のオリジナルよりアーカイブ2015年2月24日閲覧。
  6. ^ 「リソースキットユーティリティ - Windows '98 リソースキット」。ActiveXperts Software 。 2019年5月25日時点のオリジナルよりアーカイブ。 2015年2月24日閲覧
  7. ^ 「GNU utilities for Win32」2006年2月9日時点のオリジナルよりアーカイブ2015年2月24日閲覧。
  8. ^ “reactos/taskkill.c at master · reactos/reactos · GitHub” . 2024年6月24日時点のオリジナルよりアーカイブ。 2020年5月25日閲覧
  9. ^ a b「UNIXからPlan 9へのコマンド変換」 . Plan 9 wiki . 2008年9月5日時点のオリジナルよりアーカイブ。 2015年2月24日閲覧
  10. ^ IBM . 「IBM System i バージョン 7.2 プログラミング Qshell」(PDF) . IBM . 2020年9月18日時点のオリジナルよりアーカイブ(PDF) . 2020年9月5日閲覧

さらに読む