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.

instagram viewer

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ą:

  1. Stan procesu: Bieżący stan procesu
  2. Numer procesu: Niepowtarzalny numer używany do identyfikacji procesu
  3. Licznik programu: Zawiera informacje związane z następną instrukcją
  4. Rejestry: Lista wszystkich rejestrów procesora używanych przez proces
  5. Otwórz listę plików: Pliki używane przez proces
  6. Informacje o harmonogramie procesora: Zawiera informacje związane z czasem procesora i zasobami przydzielonymi procesowi
  7. Informacje dotyczące zarządzania pamięcią: Zawiera szczegółowe informacje o ilości pamięci używanej przez proces
  8. 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.

E-mail
Co to jest proces w systemie Linux?

Zrozumienie procesu i zadań jest kluczowym aspektem do zapoznania się z Linuksem. Oto, co musisz wiedzieć.

Czytaj dalej

Powiązane tematy
  • Linux
  • Linux
  • Przetwarzanie
O autorze
Deepesh Sharma (45 opublikowanych artykułów)

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.

Więcej od Deepesh Sharma

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.

.