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.