「kill」コマンドはなぜそう呼ばれますか?


16

killコマンドを「kill」と呼ぶことにしたのはなぜですか?

つまり、このユーティリティはプロセスの終了によく使用されますが、実際には任意のシグナルの送信に使用できます。

少し混乱していませんか?おそらく、いくつかの歴史的な理由があります。

man killこのコマンドがVersion 3 AT&T UNIXに登場したことは、私が知っていることすべてです。


8
確かにあなたはあなた自身の質問に答えました、コマンドはプロセスを終了するための手段として- ずっと前に(歴史的な理由から)生まれました。信号を送信するツールがあれば、それが再利用されることはほとんど避けられません...-
マーフ

2
(誇張)ストレートUnixの経験はほとんどありませんが、コマンド名の簡潔さに関係があるのでしょうか?ほとんどのコマンドには、たとえば「man」、「ls」、「cd」、「mkdir」という非常に短い名前が付いています。たぶん、それは端末の80カラムの制限に関連しています。繰り返しになりますが、私はストレートUnixで膨大な経験を積んでいないので、確信が持てません
ジェイミーテイラー

2
@JamieTaylor:短いコマンド名の主な理由は怠zyだと思います。入力するのは好きではありません。私は最近、それがcd呼ばれることを知ったがchdir、これは間違いなく狂気だ!このような一般的な操作のための5文字?;-) にエイリアスlsする人々を知っていますl
ヨアヒムザウアー

3
プログラマはを入力するのが面倒だったのでassassinate、彼らはそれを使用するたびに
briddums

1
@shabunc-おかげで、答えの順序がどのように誤解を招くかもしれないかを見ることができるので、より直接的な答えにするために並べ替えました。
マークブース

回答:


22

もともと、このkillコマンドはプロセスを強制終了することしかkillできませんでしたが、後でシグナルを送信できるように拡張されました。

Unix(1979)のバージョン7以降、デフォルトでは、プロセスをシグナルとしてキャッチし、適切に処理するか無視する(SIGTERMシグナルを送信する)ことができますが、下からラグを引き出すためにも使用できますプロセス(aはキャッチできないため無視できないSIGKILLシグナルをkill -9送信します)。

バックグラウンド

コンピューティング、特にUnixは、比phorに満ちています。

プロセスの主な比phor は、生まれ、生き、死ぬ生物の比phorです。

Unixでは、initを除くすべてのプロセスには親があり、他のプロセスを生成するプロセスには子があります。プロセスは(親が死んだ場合)孤立する可能性があり、死後にうろついている場合はゾンビになることさえあります。

したがって、killコマンドはこの比phorに適合します。

Unix考古学

Unixのバージョン4(導入されたバージョン、および)のマニュアルページからkill、次のpsことがわかります。

NAME
        kill - do in an unwanted process
SYNOPSIS
        kill processid ...
DESCRIPTION
        Kills the specified processes.
        The processid of each asynchronous process
        started with `&' is reported by the shell.
        Processid's can also be found by using ps (I).

        The killed process must have
        been started from the same typewriter
        as the current user, unless
        he is the superuser.
SEE ALSO
        ps(I), sh(I)

このmanページの最後のセクションが特に気に入っています。

BUGS
        Clearly people should only be allowed to kill
        processes owned by them, and having the same typewriter
        is neither necessary nor sufficient.

第5版が登場する頃には、killコマンドがすでにオーバーロードされていて、信号を送信できるようになっていました。

以下からのUnixプログラママニュアル、第5版(P70):

If a signal number preceded by "-" is given
as an argument, that signal is sent instead of
kill (see signal (II)).

ただし、シグナル15はまだ存在しないため、デフォルトではシグナル9を送信します(p150を参照)。

では、バージョン6killのmanページは、もはや言及していない同じタイプライターのバグを。

Unixのバージョン7でのみシグナル15が導入され(v7 のsignal(2)およびkill(1)のマニュアルページを参照)、killシグナル9を使用するのではなく、それに切り替えました。


26

これはUnixです。

kill プロセスを強制終了できません。

mv ファイルをある場所から別の場所に移動するだけでなく、名前を変更することができます。

touch ファイルを作成でき、その最終変更時刻を変更できるだけではありません。

od は、オクタルダンプを意味しますが、より多くの種類のダンプを実行できます。

yes いいえを出力することができます

よりエキゾチック:

greped同じ操作を実行するコマンドにちなんで命名されます:g/re/p

awk 著者にちなんで名付けられた:アホ、ワインバーガー、カーニガン。

yaccもう一つのコンパイラコンパイラを意味します。これbisonがGNU yaccであることに注意してください。


17
完全に公平にするために、ファイルの移動と名前変更の違いはかなりrather意的です。ファイルの「名前変更」とは、同じディレクトリにある別の場所にファイルを移動することです。
Tikhon Jelvis

mvは新しいinode(?)を作成し、ファイルの内容への参照を古いiノードから新しいiノードに移動します。同じデバイス上にない場合を除きます。次に、内容をコピーし、inodeを削除します。
ポール

3
また楽しいのは、別のプロセスで開いているファイルをmv / rmできることです。他のプロセスには、ファイルの内容への参照がまだあります。他のOSとは異なる
ポール

yesと混同して+1がnoを意味しているため
ジェイミーテイラー

@Paul-私のUnixはかなり錆びていますが、少し遅れていると思います。iノードは、ファイルの一意の識別子です。そのため、同じデバイスの場合、同じiノードを指す新しいディレクトリエントリが作成され、元のディレクトリエントリが削除されます。Appleがなぜ「inode」で誰かを訴えなかったのだろうか。
-OldFart

0

Unixバージョン7の強制終了マニュアルページの状態:

kill - terminate a process with extreme prejudice

そして

This will kill processes that do not catch the signal; in particular `kill -9 ...'  is a sure kill.

確かに利用可能な最高の隠phorであるコマンドkillを呼び出さない理由はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.