Zabijanie procesów chcąc nie chcąc, nie jest płynnym ruchem: dane mogą zostać utracone, źle zaprojektowane aplikacje mogą się zepsuć w subtelny sposób, którego nie można naprawić bez ponownej instalacji .. ale całkowicie zależy to od wiedzy, co jest, a co nie jest bezpieczne w podana sytuacja. i co byłoby zagrożone. Użytkownik powinien mieć pojęcie, czym jest lub powinien być proces i jakie są jego ograniczenia (IOPS dysku, rss / swap) i być w stanie oszacować, ile czasu powinien zająć proces długotrwały (np. Kopia pliku, ponowne kodowanie mp3, migracja poczty e-mail, tworzenie kopii zapasowych [Twój ulubiony czas tutaj].)
Ponadto przesłanie SIGKILLdo pid nie gwarantuje zabicia go. Jeśli utknął w wywołaniu systemowym lub jest już zombie ( Zin ps), może nadal być zombie. Często dzieje się tak w przypadku długotrwałego procesu ^ Z i zapominania o nim bgprzed podjęciem próby kill -9. Prosty fgpołączy ponownie stdin / stdout i prawdopodobnie odblokuje proces, zwykle następnie następuje zakończenie procesu. Jeśli utknie gdzie indziej lub w jakiejś innej formie zakleszczenia jądra, tylko ponowne uruchomienie może być w stanie usunąć proces. (Procesy zombie są już martwe po SIGKILLprzetworzeniu przez jądro (nie uruchamia się dalszy kod użytkownika), zwykle istnieje powód jądra (podobny do „zablokowania” oczekiwania na zakończenie połączenia systemowego), aby proces się nie zakończył.)
Ponadto, jeśli chcesz zabić proces i wszystkie jego dzieci, nawyk dzwonienia killz zanegowanym PID, a nie tylko z samym PID . Nie ma żadnej gwarancji SIGHUP, SIGPIPEani SIGINTinnych sygnałów, które po nim wyczyszczą, a posiadanie wielu odrzuconych procesów do czyszczenia (pamiętasz kundla?) Jest denerwujące.
Bonusowe zło: kill -9 -1jest nieco bardziej szkodliwe niż kill -9 1(nie rób tego jako root, chyba że chcesz zobaczyć, co się dzieje na wyrzucanej, nieistotnej maszynie wirtualnej)