Като софтуерни тестери, понякога трябва да знаем как изглежда процесът на зомбиране в нашата система. Можем да провеждаме различни тестове върху него, ако знаем конкретно коя програма и идентификатор на процеса са свързани с този зомби процес.
Какво е зомби процес?
Зомби или неработещ процес в Linux е процес, който е завършен, но влизането му все още остава в таблицата на процесите поради липса на съответствие между родителския и дъщерния процес. Обикновено родителският процес поддържа проверка на състоянието на своите дъщерни процеси чрез функцията wait (). Когато дъщерният процес приключи, функцията за изчакване сигнализира на родителя да излезе напълно от процеса от паметта. Ако обаче родителят не успее да извика функцията за изчакване за някое от своите деца, дъщерният процес остава жив в системата като мъртъв или зомби процес. Тези зомби процеси могат да се натрупват в голям брой във вашата система и да повлияят на нейната производителност.
Когато стартирате горната команда и стартира зомби, тя ще бъде показана от втория ред на изхода, както следва:
Ако обаче във вашата система не се изпълнява процес на зомбиране, можете да създадете манекен за целите на тестването, както е описано в тази статия. Изпълняваме този процес на Ubuntu 18.04.
Създаване на зомби-процес
В този раздел ще напишем c програма за стартиране на зомби процес в нашата система.
Отворете текстов редактор и въведете следния код:
Код
#include#include #include int main () pid_t child_pid; child_pid = fork (); if (child_pid> 0) сън (60); else изход (0); връщане 0;
Запазете този файл като зомби.° С
Процесът зомби, създаден чрез този код, ще се изпълнява в продължение на 60 секунди. Можете да увеличите продължителността на времето, като посочите време (в секунди) във функцията за заспиване ().
Отворете терминала и изпълнете следната команда, за да компилирате тази програма:
$ 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 несъществуващ
Тази команда ще ви даде състоянието, идентификатора на родител, идентификатора на процеса, програмата, която изпълнява зомби процеса (зомби програмата, която стартирахме в този урок).
Вече научихте как да създадете прост манекен процес на зомбиране. Това ще ви даде представа как изглежда във вашата система и как можете да го използвате за целите на тестването.