W systemach operacyjnych Unix proces zombie lub proces zlikwidowany to proces, który zakończył wykonywanie, ale nadal ma wpis w tabeli procesów, umożliwiając procesowi, który go uruchomił, odczytanie statusu wyjścia. W kolorowej metaforze tego terminu proces potomny umarł, ale nie został jeszcze wykorzystany.
Po zakończeniu procesu cała pamięć i związane z nim zasoby są zwalniane, aby mogły zostać wykorzystane przez inne procesy. Jednak wpis procesu w tabeli procesów pozostaje. Rodzicowi wysyłany jest sygnał SIGCHLD wskazujący, że dziecko zmarło; moduł obsługi tego sygnału zwykle wykonuje wywołanie systemowe wait, które odczytuje status wyjścia i usuwa zombie. Następnie można ponownie użyć identyfikatora procesu zombie i wpisu w tabeli procesów. Jeśli jednak rodzic zignoruje SIGCHLD, zombie pozostanie w tabeli procesów. W niektórych sytuacjach może to być pożądane, na przykład jeśli rodzic utworzy inny proces potomny, gwarantuje, że nie zostanie mu przydzielony ten sam identyfikator procesu.
Dzięki Marc dobry opis; teraz jak mam to znaleźć, dowiedzieć się, czy ją zachować, a jeśli nie, to usuń ją (i wiadomość).
John Mee,
Zwykle same się uruchamiają, jeśli to naprawdę cię irytuje, możesz zrestartować komputer lub znaleźć PID procesu nadrzędnego i go zabić, ale zależy to od tego, co pozostawia zombie za sobą, co może być problematyczne z zabiciem tego konkretnego procesu.
Marc-Andre R.,
2
Nie zapomnij przyjąć mojej odpowiedzi, jeśli to jest prawdziwa odpowiedź na twoje pytanie;) dzięki!
Marc-Andre R.
10
Przepraszamy, odpowiedziałeś tylko na pierwszą część jego pytania. Nadal nie jest jasne, czy należy się tym martwić i co z tym zrobić.
0
Jak wyjaśniono w zaakceptowanej odpowiedzi, masz proces, który zakończył wykonywanie, ale nadal znajduje się w tabeli procesów: https://serverfault.com/a/390216/48449
Nie powinno to powodować szkód, jeśli jest to tylko jeden proces, ale nadal nie powinno się zdarzyć. Jeśli jest ich zbyt wiele i nie zrestartujesz ani nie zrestartujesz powodującego je procesu nadrzędnego, możesz osiągnąć maksymalną liczbę dozwolonych procesów i spowodować poważne problemy.
Aby dowiedzieć się, czy zmartwienie jest odpowiednie i do jakiego innego procesu należy zombie, działa to dla mnie:
ps -elf --forest | grep -C5 '<[d]efunct>'
W razie potrzeby zwiększ liczbę linii kontekstu, aby dowiedzieć się o procesie nadrzędnym, najlepiej napraw ten proces, aby „zbierał” zakończone podprocesy.
Odpowiedzi:
Nie ma się czym martwić :
Źródło: http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process
źródło
Jak wyjaśniono w zaakceptowanej odpowiedzi, masz proces, który zakończył wykonywanie, ale nadal znajduje się w tabeli procesów: https://serverfault.com/a/390216/48449
Nie powinno to powodować szkód, jeśli jest to tylko jeden proces, ale nadal nie powinno się zdarzyć. Jeśli jest ich zbyt wiele i nie zrestartujesz ani nie zrestartujesz powodującego je procesu nadrzędnego, możesz osiągnąć maksymalną liczbę dozwolonych procesów i spowodować poważne problemy.
Aby dowiedzieć się, czy zmartwienie jest odpowiednie i do jakiego innego procesu należy zombie, działa to dla mnie:
W razie potrzeby zwiększ liczbę linii kontekstu, aby dowiedzieć się o procesie nadrzędnym, najlepiej napraw ten proces, aby „zbierał” zakończone podprocesy.
źródło