Jak zabić proces zombie na komputerze Mac

13

Jak zabić proces zombie lub znaleźć jego proces nadrzędny na komputerze Mac za pomocą terminala?

eFrane
źródło
3
@soandos Nie jest duplikatem, ponieważ ten temat nie dotyczy zombie. Żaden z killsygnałów nie działa w przypadku zombie IIRC. Zdarzyło mi się to wcześniej.
Daniel Beck
Zwykle można zabić zombie, jeśli proces macierzysty jest znany, ale to również wymaga zabicia tego, co nie zawsze jest przyjemnym wyborem. Dlatego zastanawiam się, czy istnieje inne rozwiązanie tego problemu.
eFrane

Odpowiedzi:

16

Hack Saw mówi:

Niestety wygląda na to, że zabijanie zombie polega na zabiciu rodzica , a jeśli rodzic jest / sbin / launchd, możesz go zabić tylko poprzez ponowne uruchomienie.

Zabicie byłoby bardzo złym pomysłem launchd, ale możesz to powiedzieć HUP.

Próbować sudo kill -s HUP 1

Spowoduje launchdto ponowne zainicjowanie bez ponownego uruchamiania. To działało dla mnie w przeszłości (wrt. Usuwanie wpisów zombie).

Sean
źródło
3

Niestety wygląda na to, że zabijanie zombie polega na zabiciu rodzica , a jeśli rodzic jest / sbin / launchd, możesz go zabić tylko poprzez ponowne uruchomienie.

Dostaję zombie od używania Xcode i zatrzymuję symulator, a to przekazuje zombie mojemu osobistemu / sbin / launchd, który nie zniknął po wylogowaniu.

ps -xo pid, ppid, stat, polecenie pokaże twoje procesy, z ich rodzicem ID w drugiej kolumnie.

Brzeszczot
źródło
1

procesy zombie są już martwe i nie można ich zabić. Powinny być automatycznie usuwane z tabeli procesów, gdy proces nadrzędny umiera.

Nie spowalniają twojego komputera i możesz je tam zostawić (są to tylko wpisy w tabeli procesów).

Istnieje maksymalna liczba procesów (możesz to sprawdzić sysctl kern.maxproc), a procesy zombie ją zmniejszą (w miarę ich liczenia).

Po osiągnięciu tego limitu nie będzie można tworzyć nowych procesów i konieczne będzie ponowne uruchomienie komputera.

Matteo
źródło
„Powinny zostać usunięte”, ale nie zawsze. Xcode jest straszny w opuszczaniu procesów zombie i nie są one czyszczone, nawet jeśli Xcode umrze / zostanie zamknięty / zabity.
JRG-Developer
@ JRG-Developer Zgadzam się, ale nie stanowią one problemu. Nie zużywają żadnych zasobów.
Matteo,
2
W rzeczywistości stanowią one problem, gdy utworzono ich zbyt wiele, a fork nie może uruchomić żadnego nowego procesu, a Ty musisz zrestartować komputer.
Adam
2
Są problemem, gdy chcesz zrestartować zawieszony proces i użyć go ponownie, ale nie można tego zrobić bez restartu.
MarcusJ
4
Gdy aplikacja znajdzie się w tym stanie, nie będzie można jej ponownie uruchomić, dopóki stary wpis nie zostanie usunięty. Nie używa żadnych zasobów, ale zanieczyszczenie tabeli uniemożliwia uruchomienie nowej instancji, dlatego jesteś zablokowany do momentu ponownego uruchomienia.
George