Qual è la differenza tra il comando Kill e Kill -9 in Unix?
Allora sia Kill che Kill -9 sono usati per uccidere un processo. Ma la differenza si vede in come il processo che ha ricevuto il comando Kill o Kill -9 si comporta.
Kill genererà un segnale SIGTERM chiedendo a un processo di uccidersi con grazia, cioè di liberare la memoria o di prendersi cura di altri processi figli. Uccidere un processo usando kill non avrà alcun effetto collaterale come la memoria non liberata perché è stato ucciso con grazia.
Kill -9 funziona in modo simile ma non aspetta che il programma muoia con grazia. Kill -9 genera un segnale SIGKILL che non controlla lo stato del processo e lo uccide immediatamente.
La differenza principale è che SIGTERM (generato da Kill) può essere ignorato se il processo deve ancora raggiungere lo stato di sicurezza (memoria libera o attività simili) e il processo può non essere ucciso. Il processo non può ignorare il SIGKILL (generato da Kill -9) e sarà ucciso immediatamente indipendentemente dallo stato in cui si trova (questo può causare qualche volta alcuni problemi ma il processo viene ucciso di sicuro).
Punto divertente da notare: c'è una canzone su "kill -9". Ascoltatela, potrebbe darvi maggiori dettagli su "kill -9".