Perché il comando "kill" lo chiama?

16

Perché è stato deciso di chiamare il comando kill "kill"?

Voglio dire, sì, questa utility è spesso usata per terminare i processi, ma può effettivamente essere utilizzata per inviare qualsiasi segnale.

Non è leggermente confuso? Forse ci sono alcuni motivi storici.

Tutto quello che so da man kill che questo comando è apparso nella versione 3 di AT & T UNIX.

    
posta shabunc 30.05.2012 - 09:59
fonte

3 risposte

22

In origine, il comando kill poteva solo uccidere un processo, solo in seguito era kill migliorato per consentire l'invio di qualsiasi segnale.

Dalla versione 7 di Unix (1979) il default è stato quello di segnalare il processo in un modo che può essere catturato e gestite con garbo o ignorate (inviando un segnale SIGTERM ), ma può anche essere usato per estrarre il tappeto da sotto un processo (un kill -9 invia un segnale SIGKILL che non può essere catturato e quindi non può essere ignorato).

Sfondo

L'informatica, e Unix in particolare, è piena di metafora.

La metafora principale dei processi è quella di un essere vivente che nasce, vive e muore.

In Unix tutti i processi tranne init hanno genitori e qualsiasi processo che spawn altri processi ha bambini . I processi possono diventare orfani (se il loro genitore muore) e possono persino diventare zombi , se rimangono in giro dopo la loro morte.

Pertanto, il comando kill si adatta a questa metafora.

Unix Archaeology

Dalla pagina del manuale dalla versione 4 di Unix (la versione in cui kill è stata introdotta, insieme a ps ) troviamo:

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)

Mi piace particolarmente la sezione finale di questa pagina man:

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

Quando è arrivata la quinta edizione, il comando kill era già stato sovraccaricato per consentire l'invio di qualsiasi segnale.

Dal Manuale dei programmatori Unix, quinta edizione (p70):

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

L'impostazione predefinita era di inviare un segnale 9, poiché il segnale 15 non esisteva ancora (vedi p150).

Con versione 6 % La pagina man dikill non menzionava più lo stesso errore di typewriter .

Solo con la versione 7 di Unix è stato introdotto il segnale 15 (vedi vedere signal(2) e kill (1) pagine man per v7) e kill è passato a quello invece di usare il segnale 9.

    
risposta data 30.05.2012 - 14:28
fonte
26

Questo è Unix.

kill è in grado di non uccidere un processo.

mv è in grado di rinominare e spostare non solo i file da un luogo all'altro.

touch è in grado di creare un file e non solo di modificare l'ultima ora di modifica.

od significa Octal Dump, ma è in grado di eseguire molti altri tipi di dumping.

yes è in grado di produrre n.

Più esotico:

grep prende il nome dal comando ed che esegue la stessa operazione: g/re/p

awk prende il nome dai suoi autori: Aho, Weinberger e Kernighan.

yacc significa ancora un altro compilatore di compilatori. Nota che bison è GNU yacc.

    
risposta data 30.05.2012 - 10:21
fonte
0

Unix version 7 kill pagina manuale afferma:

kill - terminate a process with extreme prejudice

e

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

Non ci sarebbe alcun motivo per non chiamare quel comando kill che è certamente la migliore metafora disponibile.

    
risposta data 30.05.2012 - 10:24
fonte

Leggi altre domande sui tag