Proces zombie. Nie wszyscy słyszeli o tym interesującym, ale przerażającym słowie związanym z systemem operacyjnym Linux. Na komputerze osobistym procesy zombie mogą nie stanowić zagrożenia dla zwykłego użytkownika, ale jeśli chodzi o serwery Linux, procesy te należy zidentyfikować i zatrzymać.
Takie procesy mogą powodować problemy z tabelą procesów w systemie, co z kolei może wpływać na prawidłowe funkcjonowanie maszyny. Dlatego w tym artykule szczegółowo omówimy procesy zombie, wraz z obszernym przewodnikiem dotyczącym znajdowania i zabijania procesów zombie na komputerze z systemem Linux.
Co to są procesy zombie?
Ale przede wszystkim ważne jest, aby wiedzieć, czym naprawdę są procesy zombie. Są to nic innego jak martwe i nieczynne procesy, które zajmują miejsce w tabeli procesów systemowych. ZA blok kontroli procesu lub PCB to struktura danych przechowująca szczegóły związane z poszczególnymi procesami uruchomionymi w systemie.
Tabela procesów składa się z identyfikatora procesu, łącza do PCB i innych przydatnych informacji związanych z procesem. Procesy zombie mają własne identyfikatory procesów i informacje o zarządzaniu pamięcią. Ponieważ system operacyjny Linux ma ograniczoną liczbę dostępnych identyfikatorów procesów, inne procesy nie mogą używać identyfikatorów PID, dopóki proces zombie nie zostanie zatrzymany.
Chociaż jeden lub dwa procesy zombie nie spowodują żadnych zakłóceń ani problemów z wydajnością komputera, plik duża liczba takich procesów może zaszkodzić przepływowi pracy systemu, zalewając tabelę procesów i plik zasoby.
Co powoduje procesy zombie w systemie Linux?
Aby szczegółowo zrozumieć podstawową przyczynę procesu zombie, musisz dowiedzieć się, jak procesy zaczynają się i kończą w systemie Linux. System operacyjny Linux monitoruje wszystkie uruchomione procesy i demony na komputerze. Plik tabela procesu to lista struktur zawierająca wszystkie procesy aktualnie uruchomione na komputerze.
Każdy wpis procesu w tabeli procesów składa się z odsyłacza do pliku blok kontroli procesu tego konkretnego procesu. PCB przechowuje szczegóły związane z tym konkretnym procesem. Te szczegóły obejmują:
- Stan procesu: Bieżący stan procesu
- Numer procesu: Niepowtarzalny numer używany do identyfikacji procesu
- Licznik programu: Zawiera informacje związane z następną instrukcją
- Rejestry: Lista wszystkich rejestrów procesora używanych przez proces
- Otwórz listę plików: Pliki używane przez proces
- Informacje o harmonogramie procesora: Zawiera informacje związane z czasem procesora i zasobami przydzielonymi procesowi
- Informacje dotyczące zarządzania pamięcią: Zawiera szczegółowe informacje o ilości pamięci używanej przez proces
- Informacje we / wy: Lista urządzeń wejściowych lub wyjściowych używanych przez proces
Linux używa następujących stanów procesów do opisania wszystkich swoich procesów.
- R: Trwa proces
- S: Proces snu
- re: Nieprzerwany proces snu
- T: Proces zakończony
- Z: Proces zombie
Za każdym razem, gdy proces kończy przypisane zadanie, jego stan procesu jest ustawiany na Zambi lub Z. Każdy proces ma proces nadrzędny, który wywołuje rodzinę nazwanych funkcji czekać() który czeka na zmianę stanu procesu. Na przykład, jeśli stan procesu zmieni się z Bieganie do Zambi, the czekać() zostanie uruchomiona metoda.
Plik czekać() metoda zwykle usuwa blok sterowania procesem powiązany z tym procesem zombie, a następnie usuwa wpis tego procesu z tabeli procesów.
Ale czasami, z powodu słabego rozwoju programu, proces nadrzędny nie wywołuje rozszerzenia czekać() funkcjonować. W rezultacie system nie usuwa płytki PCB procesu zombie. Wpis w tablicy procesów dla tego konkretnego procesu również pozostaje nienaruszony.
To zapewnia nieskończoną żywotność procesowi zombie. Ponieważ system nie może zabić procesu, wpis procesu nigdy nie jest usuwany, a PID nigdy nie zostaje zwolniony.
Ucz się więcej: Sposoby zabijania niereagujących programów w systemie Linux
Jak znaleźć procesy zombie?
Pierwszym krokiem do usunięcia procesów zombie w systemie jest przeanalizowanie, który proces ma rozszerzenie Zambi stan procesu. Chociaż nie będziesz w stanie zabić tych procesów bezpośrednio, ponieważ system usunął je już z pamięci, możesz zabić powiązany z nimi proces nadrzędny.
Najpierw musisz sprawdzić, czy tabela procesów twojego systemu zawiera proces zombie. Możesz to łatwo zrobić za pomocą Top Komenda. Po prostu otwórz terminal i wpisz:
Top
Zobaczysz wyjście podobne do tego. Zwróć uwagę na liczbę procesów zombie u góry okna terminala. Jeśli wynik wynosi zero, nie masz się czym martwić.
Możesz wyświetlić informacje związane z tymi procesami zombie za pomocą potoków polecenie ps z egrep. Egrep jest rozszerzeniem polecenia grep w Linuksie, które traktuje wszystkie wzorce jako rozszerzony ciąg wyrażenia regularnego.
Związane z: Przewodnik dla początkujących po wyrażeniach regularnych w Pythonie
Wpisz następujące polecenie, aby wyświetlić wszystkie procesy zombie:
ps aux | egrep „Z | nieistniejący”
Wyżej wymienione polecenie będzie szukać wierszy, które zawierają którekolwiek z nich Z lub zmarły w danych wyjściowych wygenerowanych przez polecenie ps. Dane wyjściowe składają się z listy procesów zombie działających w systemie.
Zabijanie procesów zombie za pomocą polecenia zabicia
Teraz, gdy wiesz, które procesy zombie obecnie pochłaniają zasoby systemowe, nadszedł czas, aby je zabić.
Chociaż najłatwiejszym sposobem zabicia procesów zombie jest ponowne uruchomienie komputera, czasami jest to niewykonalne, zwłaszcza jeśli zarządzasz serwerem.
Aby zabić procesy zombie bez wyłączania serwera, zanotuj identyfikator procesu dowolnego procesu zombie. Z poprzedniej sekcji widzimy, że PID procesu zombie to 18614. Następnie użyj tego PID, aby znaleźć identyfikator procesu nadrzędnego.
ps -o ppid = -p 18614
Wynik:
18613
Sprawdź, czy istnieje identyfikator procesu nadrzędnego przy użyciu rozszerzenia ps Komenda.
ps -e | grep 18613
Teraz, gdy potwierdziliśmy istnienie procesu nadrzędnego, czas go zabić. Przekaż -SIGKILL flaga z zabić polecenie w następujący sposób:
sudo kill -SIGKILL 18613
Po zabiciu procesu nadrzędnego system usunie proces zombie i automatycznie usunie go z tabeli procesów.
Efektywne zarządzanie procesami w systemie Linux
Każdy administrator systemu musi nadać priorytet procesom monitorowania uruchomionym na komputerze z systemem Linux. Chociaż procesy zombie niekoniecznie są szkodliwe dla systemu, mogą powodować problemy z wydajnością, jeśli występują w dużej liczbie.
Jeśli jesteś początkującym użytkownikiem Linuksa i nie masz pojęcia, jak system operacyjny Linux zarządza procesami, nauczenie się, czym są procesy w pierwszej kolejności, jest dobrym miejscem do rozpoczęcia.
Zrozumienie procesu i zadań jest kluczowym aspektem do zapoznania się z Linuksem. Oto, co musisz wiedzieć.
Czytaj dalej
- Linux
- Linux
- Przetwarzanie

Deepesh jest młodszym edytorem Linuksa w MUO. Treści informacyjne pisze w internecie od ponad 3 lat. W wolnym czasie pisze, słucha muzyki i gra na gitarze.
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.