Как создать фиктивный зомби-процесс в Ubuntu

Как тестировщикам программного обеспечения, нам иногда необходимо знать, как выглядит зомби-процесс в нашей системе. Мы можем проводить различные тесты на нем, если знаем, какая программа и идентификатор процесса связаны с этим зомби-процессом.

Что такое зомби-процесс?

Зомби или неработающий процесс в Linux - это процесс, который был завершен, но его запись все еще остается в таблице процессов из-за отсутствия соответствия между родительским и дочерним процессами.

Обычно родительский процесс следит за состоянием своих дочерних процессов с помощью функции wait(). Когда дочерний процесс завершает свою работу, функция wait сигнализирует родительскому процессу о полном выходе процесса из памяти. Однако если родительский процесс не вызывает функцию ожидания для любого из своих дочерних процессов, то дочерний процесс остается живым в системе как мертвый или зомби-процесс. Эти зомби-процессы могут накапливаться в большом количестве в вашей системе и влиять на ее производительность.

Найти и завершить зомби процессы в Linux

Если в вашей системе нет запущенного зомби-процесса, вы можете создать фиктивный процесс для целей тестирования, как описано в этой статье.

Создание зомби-процесса

В этом разделе мы напишем программу на языке C для запуска зомби-процесса в нашей системе.

Откройте текстовый редактор и введите следующий код:

Сохраните этот файл под именем zombie.c

Зомби-процесс, созданный с помощью этого кода, будет работать в течение 60 секунд. Вы можете увеличить продолжительность времени, указав время (в секундах) в функции sleep().

Откройте терминал и выполните следующую команду для компиляции этой программы:

Теперь будет создан исполняемый файл с именем zombie.

Обратите внимание, что вам нужно установить компилятор GNU C, если он еще не установлен в вашей системе, выполните следующую команду:

Теперь запустите программу zombie с помощью следующей команды:

Вы можете использовать ID родительского процесса (PPID) и ID дочернего процесса (PID) во время тестирования; например, убив этот зомби-процесс с помощью команды kill.

Пока этот процесс запущен, вы можете просмотреть производительность системы в другом окне терминала с помощью команды top. Вы сможете увидеть 1 зомби-процесс во второй строке вывода.

Команда ps теперь также покажет этот неработающий процесс и зомби-программу, ответственную за него:

Результат команды ps

Эта команда покажет вам

  • Cостояние
  • ParentID процесса
  • ID процесса
  • Программу, которая запускает зомби-процесс (программа-зомби, которую мы запускали в этом уроке).

Теперь вы узнали, как создать простой фиктивный зомби-процесс. Это даст вам представление о том, как он выглядит в вашей системе и как его можно использовать в целях тестирования.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий