Как тестировщикам программного обеспечения, нам иногда нужно знать, как зомби-процесс выглядит в нашей системе. Мы можем запускать на нем различные тесты, если точно знаем, какая программа и идентификатор процесса связаны с этим зомби-процессом.
Что такое зомби-процесс?
Зомби или несуществующий процесс в Linux - это процесс, который был завершен, но его запись все еще остается в таблице процессов из-за отсутствия соответствия между родительским и дочерним процессами. Обычно родительский процесс проверяет состояние своих дочерних процессов с помощью функции wait (). Когда дочерний процесс завершается, функция ожидания сигнализирует родителю о том, что процесс полностью завершен из памяти. Однако, если родительский процесс не может вызвать функцию ожидания для любого из своих дочерних процессов, дочерний процесс остается живым в системе как мертвый или зомби-процесс. Эти зомби-процессы могут накапливаться в вашей системе в больших количествах и влиять на ее производительность.
Когда вы запускаете команду top и работает зомби, это будет обозначено второй строкой вывода следующим образом:
Однако, если в вашей системе не запущен процесс-зомби, вы можете создать фиктивную версию для целей тестирования, как описано в этой статье. Мы запускаем этот процесс на Ubuntu 18.04.
Создание зомби-процесса
В этом разделе мы напишем программу на c для запуска зомби-процесса в нашей системе.
Откройте текстовый редактор и введите следующий код:
Код
#включать#включать #включать int main () pid_t child_pid; child_pid = вилка (); если (child_pid> 0) спать (60); еще выход (0); return 0;
Сохраните этот файл как зомби.c
Зомби-процесс, созданный с помощью этого кода, будет работать в течение 60 секунд. Вы можете увеличить продолжительность, указав время (в секундах) в функции sleep ().
Откройте Терминал и выполните следующую команду, чтобы скомпилировать эту программу:
$ cc зомби.c -o зомби
Теперь будет создан исполняемый файл с именем zombie.
Обратите внимание, что вам нужно будет установить компилятор GNU C, если он еще не установлен в вашей системе, с помощью следующей команды:
$ sudo apt-get install build-essential
Теперь запустите зомби-программу с помощью следующей команды:
./зомби
Вы увидите следующий результат:
Вы можете использовать идентификатор родительского процесса (PPID) и идентификатор дочернего процесса (PID) во время тестирования; например, убив этот зомби-процесс с помощью команды kill.
Пока этот процесс запущен, вы можете просмотреть производительность системы в другом окне Терминала с помощью верхней команды. Вы сможете увидеть 1 процесс зомби во второй строке вывода.
Команда ps теперь также покажет этот несуществующий процесс и программу-зомби, отвечающую за него:
$ ps axo stat, ppid, pid, comm | grep -w несуществующий
Эта команда предоставит вам состояние, parentID, идентификатор процесса, программу, которая запускает процесс зомби (программа зомби, которую мы запускали в этом руководстве).
Теперь вы узнали, как создать простой фиктивный процесс зомби. Это даст вам представление о том, как он выглядит в вашей системе и как вы можете использовать его в целях тестирования.