Wirtualne strzelby?
unix
job-control
zombie
jldugger
źródło
źródło
Proces zombie (właściwie teraz się nazywa
<defunct>
) nie jest tak naprawdę procesem. Jest to tylko wpis w tabeli procesów, więc proces nadrzędny może wykonaćwait()
wywołanie systemowe .Nie powinieneś się o nich martwić. Nie zajmują żadnych zasobów, znikają, gdy ich rodzic woła,
wait()
gdy umiera sam rodzic.źródło
Jest to proces całkowicie zwolniony, ale nadal istnieje w tabeli procesów. Porównaj to z procesem osieroconym, którego rodzic nie żyje, ale nadal wykonuje.
Oto kilka porad, jak się ich pozbyć.
źródło
Odpowiedź jest już zaakceptowana: MOŻESZ zabić proces zombie. Dołącz za pomocą debugera do procesu nadrzędnego i wywołaj funkcję waitpid. Np .: - załóżmy, że rodzic ma PID = 100, proces zombie ma PID = 200
źródło
Proces zombie nie ma żadnych przydzielonych zasobów innych niż wpis w drzewie procesów. Dzieje się tak, gdy finalizuje proces, jednak proces nadrzędny jeszcze nie odnieść go (tzn
wait
ed na nim).Możesz spróbować zmusić rodzica do zrobienia tego, jeśli chcesz, wysyłając mu SIGCHLD (
kill -20
) do rodzica, ale nie ma gwarancji, że rodzic to uszanuje.Często będziesz je widzieć przez krótki czas (na przykład podczas przeglądania drzewa procesów za pomocą góry) - jest to normalne; W odcinku czasu między zakończeniem procesu potomnego a rodzicielem odpytuje o niego - proces potomny pojawi się jako zombie.
Jeśli jednak widzisz procesy zombie, które ciągle istnieją - co nie jest normalne - nadal nie musisz się tym przejmować - ponownie, ponieważ nie ma zasobów przydzielonych do martwego procesu - ogólnie oznacza to, że aplikacja jest źle napisana przez kiepskich programistów.
Jedynym momentem, w którym powinieneś się martwić procesami zombie, jest to, że widzisz ich wiele, na przykład, jeśli ta sama kiepska aplikacja wspomniana powyżej jest obciążona.
Mamy wielu gównianych programistów, w których pracuję, więc mam zaszczyt radzić sobie z takimi problemami i uczyć się wszelkiego rodzaju bezużytecznych rzeczy. W rzeczywistości - mój zespół często ucieka się do korzystania z gównianych skryptów powłoki napisanych przez tych gównianych deweloperów w wywiadach - jeśli kandydat może stwierdzić, że skrypt jest naprawdę kiepski, i powiedzieć nam, dlaczego jest gówniany, ma dobrą stopę w drzwiach.
źródło
Co do wirtualnej strzelby ...
I pamiętaj: zawsze strzelaj im w głowę.
źródło
Proces zombie jest procesem, który zakończył wykonywanie, ale nadal znajduje się na liście w tabeli procesów.
kill -9 [nadrzędna nazwa_procesu] odłoży to, ze skrajnym uprzedzeniem.
źródło