Dlaczego postanowiono nazwać kill
polecenie „zabić”?
To znaczy, tak, to narzędzie jest często używane do kończenia procesów, ale w rzeczywistości może być używane do wysyłania dowolnego sygnału.
Czy to nie jest trochę mylące? Może istnieją jakieś historyczne powody.
Wiem tylko, man kill
że to polecenie pojawiło się w wersji 3 AT&T UNIX.
terminology
history
unix
shabunc
źródło
źródło
cd
kiedyś tak się nazywałochdir
, co jest zdecydowanie szaleństwem! 5 znaków dla tak powszechnej operacji? Znam ludzi, którzy aliasls
dol
;-)assassinate
każdym razem, gdy go używaliOdpowiedzi:
Początkowo
kill
polecenie mogło zabić tylko proces, dopiero później zostałokill
ulepszone, aby umożliwić wysyłanie dowolnego sygnału.Od wersji 7 Uniksa (1979) domyślnie było sygnalizowanie procesu w sposób, który można złapać i albo obsłużyć z wdziękiem, albo zignorować (wysyłając sygnał SIGTERM ), ale można go również użyć do wyciągnięcia dywanu spod spodu proces (a
kill -9
wysyła sygnał SIGKILL , którego nie można złapać, a zatem nie można go zignorować).tło
Komputery, a zwłaszcza Unix, są pełne metafory.
Główną metaforą procesów jest żywa istota, która się rodzi, żyje i umiera.
W Uniksie wszystkie procesy oprócz init mają rodziców , a każdy proces, który spawnuje inne procesy, ma potomki . Procesy mogą się stać osierocone (jeśli ich rodzic umrze), a nawet mogą stać się zombie , jeśli zatrzymają się po śmierci.
Zatem
kill
polecenie pasuje do tej metafory.Archeologia Uniksowa
Na stronie podręcznika z wersji 4 systemu Unix (wersja, w której
kill
został wprowadzony wraz zps
) znajdujemy:Szczególnie podoba mi się ostatnia sekcja tej strony podręcznika:
Zanim pojawiło się piąte wydanie,
kill
polecenie zostało już przeciążone, aby umożliwić wysłanie dowolnego sygnału.Z Unix Programmers Manual, wydanie piąte (p70):
Domyślnie jednak wysyłano sygnał 9, ponieważ sygnał 15 jeszcze nie istniał (patrz p150).
W wersji 6
kill
strona podręcznika nie wspomniała już o tej samej maszynie do pisania błędzie .Dopiero w wersji 7 Uniksa wprowadzono sygnał 15 (patrz strony man dla signal (2) i kill (1) dla v7) i
kill
przełączono na to, zamiast używać sygnału 9.źródło
To jest Unix.
kill
jest w stanie nie zabić procesu.mv
potrafi zmieniać nazwy i nie tylko przenosić pliki z jednego miejsca do drugiego.touch
jest w stanie utworzyć plik i nie tylko zmienić czas ostatniej modyfikacji.od
oznacza Octal Dump, ale jest w stanie wykonać wiele innych rodzajów zrzutów.yes
jest w stanie wyprowadzić nr.Bardziej egzotyczny:
grep
nosi nazwę poed
komendzie wykonującej tę samą operację:g/re/p
awk
nosi nazwę od autorów: Aho, Weinberger i Kernighan.yacc
oznacza Yet Another Compiler Compiler. Zauważ, żebison
jest to GNU yacc.źródło
Stany stron podręcznika zabijania dla systemu Unix w wersji 7 :
i
Nie byłoby żadnego powodu, aby nie nazywać tego polecenia zabiciem, które jest z pewnością najlepszą dostępną metaforą.
źródło