Jak Procesów zabić zombie na Linux

Nov 25, 2024
Dystrybucja
Fatmawati Achmad Zaenuri / Shutterstock

Programy, które są słabo napisane lub wykonywane źle mogą odejść Procesy zombie. Czuwanie wewnątrz komputera Linux. Dowiedz się, jak tworzone są zombie i jak w końcu możesz je spoczywać.

Jak układy procesowe działają na Linuksie

Oczywiście Linux ma oczywiście śledzić wszystkie aplikacje i demony działające na komputerze. Jednym ze sposobów, jakie to jest utrzymanie tabeli procesowej. Jest to lista struktur w pamięci jądra. Każdy proces ma wpis na tej liście, który zawiera pewne informacje o tym.

W każdym z konstrukcji tabeli procesów nie ma znaczenia. Trzymają Identyfikator procesu , Kilka innych elementów danych i wskaźnik do bloku sterowania procesem (PCB) dla tego procesu.

To PCB, który posiada wiele szczegółów Linuksa musi spojrzeć lub ustawiać dla każdego procesu. PCB jest również aktualizowany jako proces, który jest tworzony, podany czas przetwarzania i wreszcie zniszczony.

PCB Linux zawiera ponad 95 pól. Jest zdefiniowany Jako struktura zwana Task_struct.h. i jest ponad 700 linii długości. PCB zawiera następujące typy informacji:

  • Stan procesu. : Państwa są opisane poniżej.
  • Numer procesu. : Jego unikalny identyfikator w systemie operacyjnym.
  • Licznik programu : Gdy ten proces jest następny dostęp do CPU, system użyje tego adresu, aby znaleźć następną instrukcję procesu, który powinien zostać wykonany.
  • Rejestry. : Lista rejestrów procesora używanych przez ten proces. Lista może zawierać akumulatory, rejestry indeksu i wskaźniki stosu.
  • Otwórz listę plików. : Pliki związane z tym procesem.
  • Informacje o planowaniu procesora : Służy do ustalenia, jak często, a na ten proces przyznawany jest czas przetwarzania procesora. Priorytet procesu, wskaźniki do kolejki planowania i inne parametry planowania muszą być rejestrowane w PCB.
  • Informacje o zarządzaniu pamięcią : Szczegóły dotyczące pamięci Ten proces używa, takich jak adresy startu i końcowego pamięci procesowej i wskaźniki do stron pamięci.
  • Informacje o statusie I / O : Wszelkie urządzenia in- lub wyjściowe używane przez proces.

"Stan procesu" może być dowolnym z następujących:

  • R: Proces biegania lub zrównoważony. Uruchamianie oznacza, że ​​otrzymuje cykle procesora i wykonanie. Runnable proces jest gotowy do uruchomienia i oczekiwania na szczelinę CPU.
  • S: Proces spania. Proces czeka na działanie do zakończenia, takiego jak działanie in- lub wyjście, lub dla zasobu, aby stać się dostępny.
  • D: Proces jest w stanie awansowanym uśpienia. Używa połączenia blokującego i nie może kontynuować, dopóki nie zakończono połączenia systemowe. W przeciwieństwie do stanu "snu", proces w tym stanie nie odpowie na sygnały, dopóki nie zostanie zakończona, a wykonanie powróciło do procesu.
  • T: Proces zakończył się (zatrzymany), ponieważ otrzymał Sigstop. sygnał. Ono odpowiedzą tylko do Sigkill. lub Sigcont. sygnały, które albo zabijają proces lub instruują go, aby kontynuować odpowiednio. Tak się dzieje, gdy się zmieniasz na pierwszym planie ( fg. ) do tło ( bg) zadania.
  • Z: Proces zombie. Kiedy proces się kończy, nie tylko zniknie. Uwalnia każdą pamięć, używa i usuwa się z pamięci, ale jego wpis w tabeli procesowej i PCB pozostają. Jego stan jest ustawiony na Exit_Zombie. i proces macierzysty jest powiadamiany (przez Sigłowy sygnał), który zakończy się proces dziecka.

W stanie zombie proces macierzysty wywołuje jeden z czekać() Rodziny funkcji Po utworzeniu procesu dziecka. Następnie czeka na zmianę stanu w procesie dziecka. Czy proces dziecka został zatrzymany, kontynuowany lub zabity przez sygnał? Czy zakończyło się, biegając przez naturalne zakończenie swojego kodu?

Jeśli zmiana stanu jest to, co oznacza, że ​​proces dzieci przestał działać, jego kod wyjścia jest odczytywany. Następnie PCB dziecka jest zniszczony, a jego wpis w tabeli procesowej jest usuwany. Idealnie, wszystko dzieje się w mgnieniu oka, a procesy w stanie zombie nie istnieją bardzo długo.

ZWIĄZANE Z: Jak uruchomić i sterować procesami tła na Linuksie

Co powoduje procesy zombie na Linuksie?

Słabo pisany proces macierzystym może nie zadzwonić czekać() funkcja, gdy proces dziecka jest tworzony. Oznacza to, że nic nie obserwuje dla zmian państwowych w procesie dzieci i Sigłowy Sygnał zostanie zignorowany. Albo może kolejna aplikacja wpływa na wykonanie procesu macierzystego, z powodu słabego programowania lub złośliwego zamiaru.

Jednakże, jeśli proces macierzysty nie obserwuje zmian państwa w procesie dzieci, właściwy system sprzątania nie wystąpi. PCB i wpis w tabeli procesowej nie zostaną usunięte, gdy proces dziecko zakończy się. Powoduje to, że stan Zombie nigdy nie jest usuwany z PCB.

Zombie używają odrobiny pamięci, ale zwykle nie stanowią problemu. Wpis w tabeli procesowej jest mały, ale dopóki nie zostanie zwolniony, identyfikator procesu nie może zostać ponownie użyty. W 64-bitowym systemie operacyjnym jest mało prawdopodobne, aby spowodować jakiekolwiek problemy, ponieważ PCB jest znacznie większy niż wpis tabeli procesu.

Ogromna liczba zombie może być wyobrażalna, wpływa na ilość pamięci, która jest bezpłatna dla innych procesów. Jeśli jednak masz wiele zombie, masz poważny problem z aplikacją rodzicielską lub błędem systemu operacyjnego.

Jak usunąć procesy zombie

Nie możesz zabić procesu zombie, ponieważ jest już martwy. Nie odpowie na żadnych sygnałów, ponieważ zostały usunięte z pamięci - nie ma nigdzie do wysłania Sigkill. sygnał. Możesz spróbować wysłać Sigłowy Sygnał do procesu macierzystego, ale jeśli nie działa, gdy zakończył proces dzieci, jest mało prawdopodobne, aby teraz pracować.

Jedynym niezawodnym rozwiązaniem jest zabicie procesu macierzystego. Kiedy zostanie zakończone, jego procesy dziecka są dziedziczone przez w tym Proces, który jest pierwszym sposobem uruchamiania w systemie Linux (jego identyfikator procesu wynosi 1).

ten w tym Proces regularnie wykonuje niezbędny czyszczenie zombie, więc aby je zabić, wystarczy zabić proces, który je stworzył. ten szczyt Polecenie jest wygodnym sposobem, aby sprawdzić, czy masz jakieś zombie.

Wpisz następujące elementy:

  Góra  

System ten ma osiem procesów zombie. My może je wymienić Używając ps. Komenda i do tego Egrep. . Ponownie, procesy zombie mają stan stanu "z,", a zwykle będziesz też zobaczyć "denerwowanie".

Wpisz następujące elementy:

 PS AUX | Egrep "Z | nieoczekiwanie" 

Wymienione są procesy zombie.

Jest to sposób na odkrycie identyfikatorów procesu zombie niż przewijanie w tam iz powrotem szczyt . Widzimy również, że aplikacja o nazwie "Badprg" spowita te zombie.

Identyfikator procesu pierwszego zombie wynosi 7641, ale musimy znaleźć identyfikator procesu jego procesu macierzystego. Możemy to zrobić za pomocą ps. ponownie. Użyjemy opcji wyjściowej ( -O. ) powiedzieć ps. Aby wyświetlić tylko identyfikator procesu rodzica, a następnie przekaż go za pomocą ppid =. flaga.

Proces, który chcemy znaleźć, zostanie wskazany za pomocą -P Opcja (proces), a następnie przechodząc w identyfikatorze procesu zombie.

Dlatego wpisujemy następujące polecenie, aby wyszukać informacje o procesie dla procesu 7641, ale zgłosi to tylko identyfikator procesu macierzystego:

 PS -O PPID = -P 7641 

Powiedziano nam, że identyfikator procesu macierzystego wynosi 7636. Możemy teraz odsyłaczać to za pomocą ps. jeszcze raz.

Widzimy to pasuje do nazwy procesu macierzystego z wcześniej. Zabić proces nadrzędny, należy wybrać opcję SIGKILL z poleceniem kill w następujący sposób:

 zabić -SIGKILL 7636 

W zależności od właściciela procesu macierzystego, można również użyć sudo .

Zombies nie są przerażające ...

... chyba że jesteś w masywnej hordy. Niektórzy nie mają nic martwić i prostego restarcie otrze je.

Jednakże, jeśli zauważysz, że aplikacja lub proces jest zawsze tarła zombie, że coś należy przyjrzeć się. Jest to najprawdopodobniej po prostu niechlujnie napisany program, w którym to przypadku, może nie zaktualizowana wersja, że ​​prawidłowo sprząta po swoich procesów potomnych.


Dystrybucja - Najpopularniejsze artykuły

Co to jest „root” na Linux?

Dystrybucja Jul 7, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Użytkownik root jest najsilniejszym podmiotem w świecie Linuksa z nieograniczonymi uprawnieniami, lepiej lub go..


Jak zaktualizować Ubuntu Linux

Dystrybucja Aug 27, 2025

Tomeqs / Shutterstock.com. Potrzebujesz najnowszych i największych w oprogramowaniu Ubuntu? Nie musisz być Pro. Czytaj dalej, aby odkryć, jak zaktualizowa..


Co nowego w Elementary OS 6 „Odin”

Dystrybucja Aug 14, 2025

Elementary, Inc. Są Wiele dystrybucji Linuksa (Distros), że ludzie twierdzą, są dobrymi zamiennikami Windows lub MacO. Ale niewiele ma to wyraźny cel, i..


Jak wylogować się z komputera Mac za pomocą zacisku

Dystrybucja Aug 8, 2025

Apple ułatwia wylogowanie się z komputera Mac z opcją na pasku menu Desktop. Ale są też kilka poleceń, których możesz wylogować za pomocą terminalu, jak już odkryjemy. ..


KDE Połącz wreszcie Jadąc do iPhone

Dystrybucja Oct 26, 2025

KDE. Jeśli szukasz łatwego sposobu, aby Twój iPhone grał ładnie z twoim KDE Desktop. , dziś jest twój szczęśliwy dzień, jak KDE Connect jest os..


Co to jest pop! _OS?

Dystrybucja Oct 20, 2025

Jeśli o tym słyszałeś Pop! _Os. , mógłbyś zobaczyć ludzi często odnoszących się do tego jako najlepszej alternatywy systemu Windows lub idealnej dystrybucji Linuksa..


Jak pobrać i zainstalować parę na Linuksie

Dystrybucja Oct 9, 2025

Postmodern Studio / Shutterstock.com Więc chcesz wypróbować gier Linux. ? W tym artykule spójrzmy, jak zainstalować parę na dowolnym dystrybuc..


Jak zintegrować aplikacje i skrypty do komputera stacjonarnego Linux

Dystrybucja Oct 10, 2025

W Linux aplikacja bez pliku komputerowego nie integruje się ze środowiskiem komputerowym. Większość aplikacji zapewnia jedną, ale czasami musisz je utworzyć. To dość łatwe, po prostu ..


Kategorie