VITUX
jako testerzy oprogramowania czasami musimy wiedzieć, jak wygląda proces zombie w naszym systemie. Możemy przeprowadzić na nim różne testy, jeśli wiemy dokładnie, który program i identyfikator procesu jest powiązany z tym procesem zombie.
co to jest proces Zombie?
zombie lub nieistniejący proces w Linuksie jest procesem, który został ukończony, ale jego wpis nadal pozostaje w tabeli procesów z powodu braku zgodności między procesami nadrzędnymi i podrzędnymi. Zazwyczaj proces nadrzędny sprawdza stan swoich procesów potomnych za pomocą funkcji wait (). Po zakończeniu procesu potomnego funkcja wait sygnalizuje rodzicowi całkowite wyjście procesu z pamięci. Jeśli jednak rodzic nie wywoła funkcji wait dla żadnego z jego potomków, proces potomny pozostaje żywy w systemie jako martwy lub zombie. Te procesy zombie mogą gromadzić się w dużych ilościach w Twoim systemie i wpływać na jego wydajność.
kiedy uruchomisz polecenie top i uruchomiony zostanie zombie, zostanie to wskazane w drugiej linii wyjścia w następujący sposób:
jeśli jednak w systemie nie działa proces zombie, możesz utworzyć manekina do celów testowych, jak opisano w tym artykule. Uruchamiamy ten proces na Ubuntu 18.04.
tworzenie procesu Zombie
w tej sekcji napiszemy program c do uruchamiania procesu zombie w naszym systemie.
otwórz edytor tekstu i wpisz następujący kod:
Kod
#include <stdlib.h>#include <sys/types.h>#include <unistd.h>int main (){pid_t child_pid;child_pid = fork ();if (child_pid > 0) {sleep (60);}else {exit (0);}return 0;}
Zapisz ten plik jako zombie.c
proces zombie utworzony za pomocą tego kodu będzie działał przez 60 sekund. Możesz zwiększyć czas trwania, określając czas (w sekundach) w funkcji sleep ().
Otwórz Terminal i uruchom następujące polecenie, aby skompilować ten program:
$ cc zombie.c -o zombie
teraz zostanie utworzony plik wykonywalny o nazwie zombie.
pamiętaj, że będziesz musiał zainstalować kompilator GNU C, jeśli nie jest on już zainstalowany w Twoim systemie za pomocą następującego polecenia:
$ sudo apt-get install build-essential
Teraz uruchom program zombie za pomocą następującego polecenia:
./zombie
zobaczysz następujące wyjście:
podczas testowania można użyć ID procesu nadrzędnego (ppid) i ID procesu podrzędnego (PID); na przykład zabijając ten proces zombie za pomocą polecenia kill.
podczas gdy ten proces jest uruchomiony, możesz wyświetlić wydajność systemu w innym oknie terminala za pomocą polecenia top. Będziesz mógł zobaczyć 1 proces zombie przez drugą linię wyjścia.
polecenie ps pokaże teraz również ten nieistniejący proces i odpowiedzialny za niego program zombie:
$ ps axo stat,ppid,pid,comm | grep -w defunct
to polecenie da Ci stan, parentID, ID procesu, program, który uruchamia proces zombie (program zombie, który uruchomiliśmy w tym samouczku).
teraz nauczyłeś się, jak stworzyć prosty proces dummy zombie. To daje wyobrażenie o tym, jak to wygląda w systemie i jak można go używać do celów testowych.