Zamknij menu
    Nowe
    MacBook Pro showing programming language

    Jak otworzyć, uruchomić i stworzyć plik JAR? Przewodnik po archiwach Java

    2025-09-07
    shallow focus photo of person using MacBook

    Serwer Linux – zalety VPS, konfiguracja i bezpieczeństwo

    2025-09-03
    purple and yellow abstract painting

    Jak diagnozować kernel panic? Przyczyny, objawy i zapobieganie

    2025-08-31
    Facebook X (Twitter) Instagram
    Linuksowo
    • Główna
    • Dystrybucje
    • Tematy
      • Administracja
      • Bezpieczeństwo
      • Instalacja
      • Oprogramowanie
      • Podstawy
      • Wybór systemu
      • Rozszerzenia plików
    • Pozostałe
    Linuksowo
    Główna»Pozostałe»Co to jest proces zombie i jak go zakończyć w Ubuntu?
    Pozostałe

    Co to jest proces zombie i jak go zakończyć w Ubuntu?

    Norbert BarwickiNorbert BarwickiBrak komentarzy3 min. czyt.
    Udostępnij
    Facebook Twitter LinkedIn Pinterest E-mail

    Proces zombie w systemie Linux to proces, który zakończył swoje działanie, ale nadal widnieje w tablicy procesów, ponieważ jego proces nadrzędny nie odebrał jeszcze statusu zakończenia potomka. Zwykle są to efekty błędów programowania, jednak ich nagromadzenie może prowadzić do spowolnienia lub niestabilności systemu.

    Spis treści pokaż
    1 Czym jest proces zombie?
    2 Jak rozpoznać procesy zombie w Ubuntu?
    2.1 1. Wyświetlanie procesów zombie w terminalu
    3 Jak zakończyć proces zombie w Ubuntu? Instrukcja krok po kroku
    3.1 Krok 1 – Zidentyfikuj procesy zombie
    3.2 Krok 2 – Znajdź PID procesu nadrzędnego (PPID)
    3.3 Krok 3 – Wyślij sygnał SIGCHLD do procesu nadrzędnego
    3.4 Krok 4 – Jeśli to nie pomaga – zakończ proces rodzica
    4 Niezbędne informacje i wyjaśnienia
    5 Podsumowanie – co warto zapamiętać?

    Czym jest proces zombie?

    • Proces zombie (znany też jako defunct process) to taki, który przeszedł przez funkcję exit(), ale wciąż posiada wpis w tablicy procesów, ponieważ rodzic nie odebrał jego statusu za pomocą funkcji wait() lub waitpid().
    • Nie używają już zasobów systemowych jak pamięć czy CPU, ale zachowują PID i wpis w tabeli.
    • Jeżeli proces nadrzędny również zakończy się, zanim „posprząta” po potomku, to potomka adoptuje proces init (PID 1), który odbierze status i ostatecznie usunie go z tablicy.

    Jak rozpoznać procesy zombie w Ubuntu?

    1. Wyświetlanie procesów zombie w terminalu

    Aby wyszukać procesy zombie, użyj jednej z poniższych metod:

    • Przy pomocy ps i grep –
     ps aux | awk '{ print $8 " " $2 }' | grep -w Z 

    Lub bardziej czytelnie:

     ps aux | egrep "Z|defunct" | grep -v 'grep' 

    Status Z oznacza proces zombie.

    • W aplikacji top –

      Uruchom polecenie:

     top 

    W kolumnie STAT znajdziesz procesy oznaczone literą Z.

    Jak zakończyć proces zombie w Ubuntu? Instrukcja krok po kroku

    Krok 1 – Zidentyfikuj procesy zombie

    W terminalu wpisz:

    ps -ef | grep defunct 

    lub

    ps aux | awk '{ print $8 " " $2 }' | grep -w Z 

    Wynik zwróci linie z PID procesów w stanie zombie.

    Krok 2 – Znajdź PID procesu nadrzędnego (PPID)

    Każdy proces zombie ma swój nadrzędny proces (rodzica), który nie odebrał kodu zakończenia.
    Wyświetl szczegóły procesu zombie wraz z PPID:

    ps -A -ostat,ppid,pid,cmd | grep -e '[Zz]' 

    Przykładowy wynik:

    Z 1234 5678 [defunct] 

    Gdzie 1234 to PPID (PID procesu rodzica), 5678 to PID procesu zombie.

    Krok 3 – Wyślij sygnał SIGCHLD do procesu nadrzędnego

    By wymusić odebranie statusu zakończenia przez rodzica (jeśli nadal działa), wyślij sygnał SIGCHLD –

    kill -s SIGCHLD <PPID> 

    Przykład:

    kill -s SIGCHLD 1234 

    Jeśli proces rodzica zareaguje, status potomka zostanie odebrany, a wpis procesu zombie zniknie z systemu.

    Krok 4 – Jeśli to nie pomaga – zakończ proces rodzica

    Jeżeli wysłanie sygnału nie rozwiązało problemu (np. gdy proces rodzica nie reaguje lub jest uszkodzony), pozostaje zakończyć proces rodzica komendą:

    kill -9 <PPID> 

    Uwaga! Zakończenie procesu rodzica może spowodować niepożądane skutki w działaniu aplikacji/systemu.

    Po zakończeniu procesu rodzica, procesy zombie zostaną przekazane do procesu init, który je posprząta.

    Niezbędne informacje i wyjaśnienia

    • Procesy zombie sporadyczne – Jeden lub dwa to normalne zjawisko i nie stanowią problemu.

    • Nadmierna liczba zombie – Nagromadzenie wielu procesów zombie oznacza błąd w kodzie programu lub poważniejszy problem i wymaga interwencji.

    • Zapobieganie zombie – Własne skrypty i programy powinny zawsze obsługiwać sygnały zakończenia dzieci (SIGCHLD) i wywoływać wait()/waitpid().

    Podsumowanie – co warto zapamiętać?

    • Proces zombie to niedokończony etap sprzątania po procesie potomnym.
    • Najczęściej usuwane są automatycznie po odebraniu statusu przez rodzica.
    • W przypadku wielu zombie należy zdiagnozować i naprawić źródło problemu w kodzie aplikacji/process-handling.
    • Poskramianie zombie polega na wysyłce sygnału lub zakończeniu procesu rodzica.

    Ten poradnik można dowolnie publikować na serwisie tematycznym poświęconym Linux.

    Norbert Barwicki
    • WWW

    Norbert Barwicki pracuje z systemami Linux od 2007 roku, kiedy to zainstalował swoją pierwszą dystrybucję Ubuntu 7.04. Przez lata eksperymentował z ponad 15 różnymi dystrybucjami, w tym Fedora, Debian, Arch Linux i Gentoo, a od 2015 roku specjalizuje się w administracji serwerami opartymi na CentOS i Red Hat Enterprise Linux. Jako certyfikowany administrator Linux (RHCSA od 2018 roku) dzieli się swoją wiedzą na Linuksowo.pl, gdzie opublikował już ponad 100 artykułów pomagających użytkownikom w przejściu na świat open source.

    Pozostałe poradniki

    Polecenie grep w Linux – jak efektywnie wyszukiwać tekst w plikach?

    3 min. czyt.

    Jak zlokalizować i zakończyć proces w systemie Linux?

    3 min. czyt.

    Jak używać polecenia grep do wyszukiwania tekstu w Debianie?

    3 min. czyt.

    Jak zamknąć aplikację, która nie odpowiada, w systemie Linux?

    3 min. czyt.

    Co to jest proces zombie i jak go usunąć w systemie Debian?

    3 min. czyt.
    a computer screen with a program running on it

    Podstawowe komendy Linux – zarządzanie plikami, katalogami i procesami w terminalu

    25 min. czyt.
    Dodaj komentarz
    Odpowiedz Anuluj


    Poradniki
    MacBook Pro showing programming language

    Jak otworzyć, uruchomić i stworzyć plik JAR? Przewodnik po archiwach Java

    2025-09-07
    shallow focus photo of person using MacBook

    Serwer Linux – zalety VPS, konfiguracja i bezpieczeństwo

    2025-09-03
    purple and yellow abstract painting

    Jak diagnozować kernel panic? Przyczyny, objawy i zapobieganie

    2025-08-31

    LibreOffice czy OpenOffice? Który pakiet biurowy lepiej spełnia Twoje potrzeby?

    2025-08-26
    Artykuły
    disc, reader, reading poor, hard drive, pc, it, hard drive, hard drive, hard drive, hard drive, hard drive

    Jak używać fdisk do zarządzania partycjami na dysku twardym? Funkcje, możliwości i typy tablic partycji

    2025-08-23
    Gnome

    GNOME – intuicyjne środowisko graficzne dla systemów Unix

    2025-08-21
    a row of black computers sitting on top of a table

    Jaki Linux na stary komputer? Przewodnik po lekkich dystrybucjach

    2025-08-18
    O Linuksowo

    Linuksowo.pl to kompendium wiedzy dla wszystkich zainteresowanych systemami operacyjnymi opartymi na jądrze Linux. Oferujemy eksperckie artykuły obejmujące dystrybucje, instalację, bezpieczeństwo oraz oprogramowanie open source. Naszym celem jest dostarczanie praktycznych porad zarówno dla początkujących, jak i zaawansowanych użytkowników.

    © 2025 Linuksowo – Wszelkie prawa zastrzeżone.
    • Strona główna
    • O Linuksowo
    • Polityka prywatności i cookies
    • RSS
    • Kontakt

    Type above and press Enter to search. Press Esc to cancel.