Există exact trei motive pentru care kill -9 nu va ucide un proces.
(Paginile vechi de manual au etichetat acest lucru drept „Ucide cu prejudecăți extreme”. Un proces nu poate evita -9, ci doar întârzie moartea acestuia.)
Puteți verifica procesul cu ps -O stat -p 1234
de exemplu. Examinați coloana de stare (S):
Cele trei motive pentru care un proces nu moare imediat din -9 sunt:
- E deja mort -- este un zombie. (status=Z) Va dispărea când părintele său îl așteaptă (și colectează zombiul) sau procesul părinte însuși moare.
- Este blocat într-un dispozitiv de așteptare. (starea=D) Singura modalitate de a le ucide este să faceți dispozitivul să-l elibereze sau să repornească. Acest lucru poate necesita așteptarea sau manipularea fizică a dispozitivului sau un alt mod în afara benzii pentru a „locui” dispozitivul blocat. (Și, în cazuri rare, o repornire va eșua și se va bloca, iar va trebui să porniți.)
- Este suspendat (status=T), caz în care kill -9 îl ucide, dar de fapt nu moare până când procesul este reluat (kill -CONT)
Comanda kill returnează de fapt ceva, deși dacă reușește, nu imprimare orice. Toate comenzile au o valoare returnată. Puteți verifica cu eco $?
imediat după rularea comenzii. Dacă valoarea returnată este 0, distrugerea a reușit și nu se tipărește nimic. Orice altă valoare este o eroare și ar trebui să imprime eroarea; posibilele erori pot fi Permisiune refuzată (sau operațiune nepermisă) și Nu există un astfel de proces. pkill are câteva erori care sunt puțin mai interesante.