Mengapa perintah "bunuh" disebut demikian?


16

Mengapa diputuskan untuk memanggil killperintah "bunuh"?

Maksud saya, ya, utilitas ini sering digunakan untuk mengakhiri proses, tetapi sebenarnya dapat digunakan untuk mengirim sinyal apa pun.

Bukankah ini sedikit membingungkan? Mungkin ada beberapa alasan historis.

Yang saya tahu dari man killitu perintah ini muncul di Versi 3 AT&T UNIX.


8
Tentunya Anda sudah menjawab pertanyaan Anda sendiri, perintah berasal sebagai sarana untuk menghentikan proses - yang lama waktu yang lalu (alasan historis). Setelah Anda memiliki alat yang mengirimkan sinyal, hampir tidak terhindarkan alat itu akan diganti ...
Murph

2
(hiperbola) Meskipun saya memiliki sedikit pengalaman dengan Unix lurus, mungkinkah itu terkait dengan singkatnya nama perintah? Sebagian besar perintah memiliki nama yang sangat pendek "man", "ls", "cd" "mkdir" misalnya. Mungkin itu terkait dengan batas 80 kolom untuk terminal. Sekali lagi, saya tidak yakin karena saya tidak punya banyak pengalaman dengan Unix langsung
Jamie Taylor

2
@ JamieTaylor: Saya pikir alasan utama untuk nama perintah pendek adalah malas. Kami tidak suka mengetik banyak. Saya baru-baru belajar bahwa cddulu dipanggil chdir, yang pasti gila! 5 karakter untuk operasi yang umum? Saya tahu orang-orang yang alias lske l;-)
Joachim Sauer

3
Karena para programmer terlalu malas untuk mengetik di assassinatesetiap kali mereka menggunakannya
briddums

1
@shabunc - Terima kasih, saya dapat melihat bagaimana urutan jawaban saya mungkin menyesatkan, jadi saya telah memesannya kembali untuk menjadikannya jawaban yang lebih langsung.
Mark Booth

Jawaban:


22

Awalnya, killperintah hanya bisa mematikan proses, hanya kemudian killditingkatkan untuk memungkinkan Anda mengirim sinyal apa pun.

Sejak versi 7 dari Unix (1979) standarnya adalah untuk memberi sinyal proses dengan cara yang dapat ditangkap dan ditangani dengan baik atau diabaikan (dengan mengirimkan sinyal SIGTERM ), tetapi juga dapat digunakan untuk menarik karpet keluar dari bawah sebuah proses (a kill -9mengirimkan sinyal SIGKILL yang tidak dapat ditangkap dan karenanya tidak dapat diabaikan).

Latar Belakang

Komputasi, dan Unix khususnya, penuh dengan metafora.

Metafora utama untuk proses adalah dari makhluk hidup yang lahir, hidup dan mati.

Di Unix semua proses kecuali init memiliki orang tua , dan setiap proses yang menumbuhkan proses lain memiliki anak . Proses dapat menjadi yatim (jika orang tua mereka meninggal) dan bahkan dapat menjadi zombie , jika mereka berkeliaran setelah kematian mereka.

Dengan demikian, killperintah ini cocok dengan metafora ini.

Unix Archaeology

Dari halaman manual dari versi 4 Unix (versi di mana killdiperkenalkan, bersama dengan ps) kami menemukan:

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)

Saya terutama menyukai bagian terakhir dari halaman manual ini:

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

Pada saat edisi kelima tiba, killperintah sudah kelebihan beban untuk memungkinkan sinyal dikirim.

Dari Manual Programmer Unix, Edisi Kelima (hal. 70):

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

Defaultnya adalah mengirim sinyal 9, karena sinyal 15 belum ada (lihat hal. 150).

Dengan versi 6 yang killhalaman manual tidak lagi menyebutkan mesin tik yang sama bug.

Hanya dengan versi 7 dari Unix sinyal 15 diperkenalkan (lihat lihat sinyal (2) dan bunuh (1) halaman manual untuk v7) dan killberalih ke itu daripada menggunakan sinyal 9.


26

Ini adalah Unix.

kill tidak dapat mematikan proses.

mv dapat mengubah nama dan tidak hanya memindahkan file dari satu tempat ke tempat lain.

touch mampu membuat file dan tidak hanya mengubah waktu modifikasi terakhirnya.

od berarti Dump Octal, tetapi mampu melakukan lebih banyak jenis kesedihan.

yes dapat menghasilkan no.

Lebih eksotis:

grepdiberi nama setelah edperintah yang melakukan operasi yang sama:g/re/p

awk dinamai menurut penulisnya: Aho, Weinberger dan Kernighan.

yaccberarti kompiler lagi. Perhatikan itu bisonadalah GNU yacc.


17
Agar sepenuhnya adil, perbedaan antara memindahkan dan mengganti nama file agak sewenang-wenang. "Mengganti nama" file hanya memindahkannya ke lokasi lain yang kebetulan berada di direktori yang sama.
Tikhon Jelvis

mv membuat inode baru (?) dan memindahkan referensi ke konten file dari inode lama ke yang baru. Kecuali saat tidak di perangkat yang sama. Kemudian menyalin konten dan menghapus inode.
Paul

3
Yang juga menyenangkan adalah Anda dapat melakukan mv / rm file yang dibuka oleh proses lain. Proses lain masih memiliki referensi ke konten file. Berbeda dari OS lain
Paul

+1 untuk membingungkan saya dengan ya juga berarti tidak
Jamie Taylor

@ Paul - My Unix sangat berkarat, tapi saya pikir Anda memilikinya sedikit terbelakang. Inode adalah pengidentifikasi unik file. Jadi, dalam kasus perangkat yang sama, entri direktori baru dibuat menunjuk ke inode yang sama dan kemudian entri direktori asli dihapus. Saya ingin tahu mengapa Apple tidak menggugat seseorang atas "inode".
OldFart

0

Unix version 7 kill menyatakan halaman manual :

kill - terminate a process with extreme prejudice

dan

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

Tidak ada alasan untuk tidak memanggil perintah kill yang tentu saja merupakan metafora terbaik yang ada.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.