Зомби процес. Не всеки е чувал за тази интересна, но страшна дума, свързана с операционната система Linux. На персонален компютър зомби процесите може да не представляват заплаха за обикновения потребител, но когато става въпрос за Linux сървъри, тези процеси трябва да бъдат идентифицирани и спрени.

Такива процеси могат да причинят проблеми с таблицата с процеси на вашата система и от своя страна да нарушат правилното функциониране на вашата машина. Ето защо в тази статия ще обсъдим подробно зомби процесите, заедно с изчерпателно ръководство за намиране и убиване на зомби процеси на Linux машина.

Какво представляват зомби процесите?

Но преди всичко това е важно да знаете какво всъщност представляват зомби процесите. Това не са нищо друго освен мъртви и несъществуващи процеси, които заемат място в таблицата на системните процеси. A блок за управление на процеса или PCB е структура от данни, която съхранява подробности, свързани с отделни процеси, изпълнявани във вашата система.

Таблицата на процеса се състои от идентификатор на процеса, връзка към печатната платка и друга полезна информация, свързана с процеса. Зомби процесите имат свои собствени идентификатори на процеси и информация за управление на паметта. Тъй като ОС Linux има ограничен брой налични идентификатори на процеси, други процеси не могат да използват PID, докато зомби процесът не спре.

Въпреки че един или два зомби процеси няма да причинят никакви смущения или проблеми с производителността на вашия компютър, a голям брой такива процеси могат да навредят на работния процес на вашата система, като наводнят таблицата с процеси и ресурси.

Какво причинява зомби процесите в Linux?

За да разберете подробно основната причина за зомби процес, ще трябва да научите как процесите започват и спират в Linux. Операционната система Linux следи всички работещи процеси и демони на компютър. The таблица на процесите е списък със структури, който съдържа всички процеси, които в момента се изпълняват на вашата машина.

Всеки запис в процеса в таблицата на процесите се състои от връзка към блок за управление на процеса на този специфичен процес. ПХБ съхранява подробностите, свързани с този конкретен процес. Тези подробности включват:

  1. Състояние на процеса: Текущото състояние на процеса
  2. Номер на процеса: Уникален номер, използван за идентифициране на процеса
  3. Брояч на програми: Съдържа информация, свързана със следващата инструкция
  4. Регистри: Списък на всички регистри на процесора, използвани от процеса
  5. Отваряне на списък с файлове: Файлове, използвани от процеса
  6. Информация за планиране на процесора: Съдържа информация, свързана с времето на процесора и ресурси, разпределени за процеса
  7. Информация за управление на паметта: Включва подробности за обема на паметта, използвана от процеса
  8. I / O информация: Списък на входните или изходните устройства, използвани от процеса

Linux използва следните състояния на процеса, за да опише всички свои процеси.

  • R: Изпълняващ се процес
  • С: Процес на сън
  • д: Непрекъснат процес на сън
  • T: Прекратен процес
  • Z.: Зомби процес

Винаги, когато даден процес завърши възложената задача, неговото състояние на процеса се задава като Зомби или Z.. Всеки процес има родителски процес, който извиква семейство от функции с име изчакайте() което чака промяна на състоянието на даден процес. Например, ако състоянието на процеса се промени от Бягане да се Зомби, изчакайте() метод ще бъде задействан.

The изчакайте() метод обикновено изтрива контролния блок на процеса, свързан с този зомби процес и след това премахва записа от този процес от таблицата на процесите.

Но понякога поради лошото развитие на програмата родителският процес не извиква изчакайте() функция. В резултат на това системата не изтрива печатната платка на зомби процеса. Вписването в таблицата на процесите за този специфичен процес също остава непокътнато.

Това дава на зомби процеса безкрайна продължителност на живота. Тъй като системата не може да убие процеса, записът в процеса никога не се изтрива и PID никога не се освобождава.

Научете повече: Начини за убиване на програми, които не реагират в Linux

Как да намерим зомби процеси?

Първата стъпка за премахване на зомби процесите във вашата система е да анализирате кой процес има Зомби състояние на процеса. Въпреки че няма да можете да убиете тези процеси директно, тъй като системата вече ги е премахнала от паметта, можете да убиете родителския процес, свързан с тях.

Първо, трябва да проверите дали таблицата с процеси на вашата система има зомби процес. Можете да направите това лесно с помощта на Горна част команда. Просто отворете терминала си и напишете:

Горна част

Ще видите изход, подобен на този. Забележете броя на зомби процесите в горната част на прозореца на терминала. Ако изходът е нулев, тогава няма за какво да се притеснявате.

Можете да изброите информация, свързана с тези зомби процеси чрез тръбопроводи командата ps с егреп. Egrep е разширение на командата grep в Linux, което третира всички модели като разширен низ на регулярни изрази.

Свързани: Ръководството за начинаещи за регулярни изрази с Python

Въведете следната команда, за да изброите всички зомби процеси:

ps aux | egrep "Z | несъществуващ"

Гореспоменатата команда ще търси редове, които съдържат и двете Z. или несъществуващ в изхода, генериран от командата ps. Резултатът се състои от списък на зомби процесите, работещи във вашата система.

Убиване на зомби процеси Използване на командата kill

Сега, след като знаете кои зомби процеси в момента разяждат системните ви ресурси, е време да ги убиете.

Въпреки че най-лесният начин за убиване на зомби процеси е чрез рестартиране на компютъра, понякога това не е осъществима опция, особено ако администрирате сървър.

За да убиете зомби процесите, без да изключвате сървъра си, запишете идентификатора на процеса на всеки зомби процес. От предишния раздел можем да видим, че PID на зомби процеса е бил 18614. След това използвайте този PID, за да намерите идентификатора на родителския процес.

ps -o ppid = -p 18614

Изход:

18613

Проверете дали съществува идентификатор на родителски процес, като използвате пс команда.

ps -e | grep 18613

След като потвърдихме съществуването на родителския процес, е време да го убием. Преминете през -ЗНАЙТЕ флаг с убий команда, както следва:

sudo kill -SIGKILL 18613

След като убиете родителския процес, системата ще изтрие зомби процеса и ще го премахне автоматично от таблицата на процесите.

Ефективно управление на процесите в Linux

Всеки системен администратор трябва да даде приоритет на процесите на мониторинг, работещи на Linux машина. Въпреки че зомби процесите не са непременно вредни за вашата система, те могат да причинят проблеми с производителността, ако съществуват в голям брой.

Ако сте начинаещ потребител на Linux и нямате представа как операционната система Linux управлява процеси, първо е да научите какво представляват процесите.

електронна поща
Какво представлява процесът в Linux?

Разбирането на процеса и заданията е ключов аспект за справяне с Linux. Ето какво трябва да знаете.

Прочетете Напред

Свързани теми
  • Linux
  • Linux
  • Обработка
За автора
Дийпеш Шарма (45 статии публикувани)

Deepesh е младши редактор за Linux в MUO. Той пише информационно съдържание в интернет повече от 3 години. В свободното си време той обича да пише, да слуша музика и да свири на китара.

Още от Deepesh Sharma

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!

Още една стъпка…!

Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.

.