“Kill” komutu neden böyle adlandırılıyor?


17

Neden kill"öldür" komutunu vermeye karar verildi ?

Yani, evet, bu yardımcı program genellikle işlemleri sonlandırmak için kullanılır, ancak aslında herhangi bir sinyal göndermek için kullanılabilir.

Biraz kafa karıştırıcı değil mi? Belki bazı tarihsel nedenler vardır.

man killBu komuttan bildiğim tek şey Sürüm 3 AT&T UNIX'te ortaya çıktı.


8
Şüphesiz kendi sorunuzu cevapladınız, komuta süreçleri sonlandırmak için bir araç olarak ortaya çıktı - uzun zaman önce (tarihsel nedenler). Sinyalleri gönderen bir araca sahip olduğunuzda, yeniden kullanıma sokulması neredeyse kaçınılmazdır ...
Murph

2
(abartma) Düz Unix ile ilgili çok az deneyimim olmasına rağmen, komut adlarının kısalığı ile ilgili olabilir mi? Çoğu komutun çok kısa isimleri vardır "man", "ls", "cd" "mkdir". Belki de terminaller için 80 sütun sınırıyla ilgilidir. Yine, düz Unix ile çok fazla deneyimim olmadığından emin olamıyorum
Jamie Taylor

2
@JamieTaylor: Kısa komut adlarının ana sebebinin tembellik olduğunu düşünüyorum. Fazla yazmayı sevmiyoruz. Geçenlerde , kesinlikle delilik olan cddenir öğrendim ! Böyle ortak bir işlem için 5 karakter? ;-)chdirlsl
Joachim Sauer

3
Programcılar assassinateher kullandıklarında yazmak için çok tembel oldukları için
briddums

1
@shabunc - Teşekkürler, cevabımın sırasının nasıl yanıltıcı olabileceğini görebiliyorum, bu yüzden daha doğrudan bir cevap vermek için tekrar sipariş verdim.
Mark Booth

Yanıtlar:


23

Başlangıçta, killkomut sadece bir işlemi öldürebilir, ancak daha sonra killherhangi bir sinyal göndermenize izin vermek için geliştirilmiştir.

Unix'in (1979) 7 sürümünden beri varsayılan işlem, yakalanabilecek ve zarif bir şekilde işlenebilecek veya göz ardı edilebilecek (bir SIGTERM sinyali göndererek) bir şekilde sinyal vermek olmuştur, ancak halıyı alttan dışarı çekmek için de kullanılabilir bir işlem (a yakalanamayan ve dolayısıyla göz ardı edilemeyen kill -9bir SIGKILL sinyali gönderir ).

Arka fon

Bilişim ve özellikle Unix, metaforla doludur.

Süreçler için ana metafor , doğan, yaşayan ve ölen canlı bir şeydir.

Unix'de dışındaki tüm süreçler init sahip anne ve herhangi süreç olarak çoğaltılır diğer süreçler vardır çocukları . Süreçler öksüz kalabilir (eğer ebeveynleri ölürse) ve hatta ölümlerinden sonra takılırlarsa zombi olabilirler .

Böylece, killkomut bu metafora uyuyor.

Unix Arkeolojisi

Gönderen manuel sayfa Unix (versiyonunun sürüm 4 ila killbirlikte tanıtıldı psbuluruz):

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)

Özellikle bu kılavuz sayfasının son bölümünü beğendim:

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

Beşinci baskı geldiğinde, killherhangi bir sinyalin gönderilmesine izin vermek için komut zaten aşırı yüklenmişti.

Gönderen Unix Programcılar Kılavuzu, Beşinci Baskı (p70):

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

Bununla birlikte varsayılan değer, sinyal 15 henüz mevcut olmadığından bir sinyal 9 göndermekti (bkz. P150).

İle sürüm 6kill adam sayfa artık söz aynı daktilo hata.

Sadece Unix'in 7 versiyonunda sinyal 15 tanıtıldı (bakınız sinyal (2) ve v7 için kill (1) man sayfalarını) ve killsinyal 9'u kullanmak yerine buna geçildi.


26

Bu Unix.

kill bir süreci öldüremez.

mv dosyaları yeniden adlandırabilir ve dosyaları bir yerden bir yere taşımakla kalmaz.

touch bir dosya oluşturabilir ve yalnızca son değişiklik zamanını değiştiremez.

od Octal Dump anlamına gelir, ancak daha birçok çeşit çöplük gerçekleştirebilir.

yes çıktı alabilir.

Daha egzotik:

grepedaynı işlemi gerçekleştiren komuttan sonra adlandırılır :g/re/p

awk adını yazarlarından alır: Aho, Weinberger ve Kernighan.

yaccbaşka bir derleyici derleyici anlamına gelir. Bunun bisonGNU yacc olduğunu unutmayın .


17
Tamamen adil olmak gerekirse, bir dosyayı taşıma ve yeniden adlandırma arasındaki fark oldukça keyfi. Bir dosyayı "yeniden adlandırmak" sadece aynı dizinde olan farklı bir konuma taşıyor.
Tikhon Jelvis

mv yeni bir inode (?) oluşturur ve referansı eski inode'dan yeni inode'a taşır. Aynı cihazda olmadığı durumlar hariç. Ardından içeriği kopyalar ve inode'u kaldırır.
Paul

3
Ayrıca eğlenceli olan başka bir işlemle açık olan bir dosyayı mv / rm yapabilirsiniz. Diğer işlem hala dosya içeriğine başvuruyor. Diğer işletim sistemlerinden farklı
Paul

Evet ile karıştırmak için +1 de hayır anlamı
Jamie Taylor

@Paul - Unix'im oldukça paslı, ama sanırım biraz geriye aldınız. Inode, dosyanın benzersiz tanımlayıcısıdır. Böylece, aynı cihaz durumunda, aynı inode işaret eden yeni bir dizin girişi oluşturulur ve daha sonra orijinal dizin girişi kaldırılır. Acaba Apple neden "inode" dan birine dava açmadı.
OldFart

0

Unix sürüm 7 manuel sayfa durumlarını öldür :

kill - terminate a process with extreme prejudice

ve

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

Kesinlikle mevcut en iyi metafor olan bu komuta öldürme dememek için iyi bir neden yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.