Научите Линук

Како убити Зомбие процесе у Линуку

Како убити Зомбие процесе у Линуку

Зомби процес у Линуку односи се на оне већ мртве процесе, али су, на овај или онај начин, још увек присутни у табели процеса система. Рупа је у томе што родитељ из неког разлога овај процес из табеле процеса није очистио. Обично се то дешава након завршетка поступка извршења.

Уобичајени начин рада у Линуку је да након што процес заврши своје извршавање, он обавести родитеља који је одговоран за уклањање процеса из табеле. Нажалост, родитељ није у могућности да уклони поступак из меморије у случајевима када родитељ не може да прочита дететов статус. Тако долази до тога да у табели процеса имамо мртве процесе. То су оно што називамо зомби процесима.

Шта узрокује Линук Зомбие процесе?

Када се подређени процес креира, лоше написан надређени процес можда неће успети да позове функцију ваит (). Као резултат, његова зомби деца остаће у сећању док се не угасе.

То значи да ништа не надгледа процес новорођенчета због промена стања, а сигнал СИГЦХЛД ће бити занемарен. Можда друга апликација омета извршење родитељског процеса било лошим програмирањем или злонамерном намером.

Исправно одржавање система неће се догодити ако родитељски процес не прати промене стања у детету.

Када се поступак дојенчета заврши, ПЦБ и унос у табелу процеса неће бити уклоњени. Као резултат тога, зомби стање се никада не уклања са ПЦБ-а.

Зомбији имају мало меморије, али то обично није проблем. Будући да Линук системи имају коначан број ПИД-ова (иако велик број), ако је зомбирано довољно ПИД-ова, ниједан други процес не може започети. Сумња се да ће се то догодити.

Међутим, зомбирани процеси сугеришу да нешто није у реду са апликацијом и да одређени програм може имати грешку.
Софтверске грешке у дата центрима не треба толерисати и морају се решавати.
Требали бисте припазити и уништавати зомби процесе док се квар не отклони.

ИД процеса не може се поново користити док се не покрене, тако да је унос у табелу процеса мали.
Будући да је ПЦБ много већи од уноса табеле процеса у 64-битном оперативном систему, мало је вероватно да ће то изазвати проблеме.

На количину меморије доступне за друге процесе могао би утицати велики број зомбија. Међутим, ако имате толико зомбија, имате озбиљан проблем са родитељском апликацијом или грешку у оперативном систему.

Па, шта радите када се поступак претвори у зомбија? Тражите и елиминишете зомби процесе.

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

Прво заустављање убијања зомби процеса у систему је прво његово идентификовање. Будући да се поступак покретања редовно чисти након зомбија, све што треба да урадите да бисте их се решили је да уништите процес који их је створио.

Команда на врху је брз начин да видите да ли у вашем подручју има зомбија. Да бисмо то постигли, извршићемо следећу наредбу.

врх

врхунски резултати команде

Број зомби процеса у овом систему биће приказан на излазу. У нашем горе наведеном случају имамо 0 зомбија.
Коришћењем пс команде и пребацивањем у егреп можемо добити списак истих. Државна застава за зомби процесе је „З“, а понекад ћете видети и „нестало“.

тутс @ фосслинук: ~ $ пс аук | егреп "З | угашен"

Државна застава за зомби процесе је З или не постоји

Рашчланимо разне одељке ове команде.

З у СТАТ колони излаза идентификује зомби процес.
[дефунцт] у последњој (ЦОММАНД) колони резултата такође идентификује зомби процес.

У идеалном случају, није могуће убити процес зомбија јер је мртав. Уместо тога, обавештавамо родитеља да покуша и прочита статус дететовог процеса и коначно их очисти из системске табеле. Да бисмо покренули овај процес, родитељу процеса шаљемо сигнал СИГЦХЛД. Идентификовање ИД-а надређеног процеса или онога што се назива ПИД укључује покретање следеће наредбе:

тутс @ фосслинук: ~ $ пс -о ппид = 

Идентификовање матичног ИД процеса

Након добијања ПИД-а зомбија, користите наредбу СИГЦХЛД сигнал за претходно идентификоване родитељске процесе.

тутс @ фосслинук: ~ $ килл -с СИГЦХЛД 

користите наредбу СИГЦХЛД сигнал

У неким случајевима ово не рашчисти поступак зомбија. То нас позива да се укључимо у план б или ц. Претходно подразумева поновно покретање надређеног процеса или убијање надређених процеса. С друге стране, потоњи случајеви укључују поновно покретање система, посебно када Зомби процес може проузроковати прекид рада или масовни вал због процеса зомбија.

Испод је наредба да се убије родитељски процес.

тутс @ фосслинук: ~ $ килл -9 

наредба да се убије родитељски процес

У случају да се родитељски процес убије, продужују се и сви подређени процеси датог родитеља. У случају да је један од подређених процеса у датом тренутку критичан, можда ћете морати да одложите убијање док не буде безбедно. С друге стране, брза двострука провера може вам рећи колико меморије или процесорске снаге троше зомби процеси. Ово помаже у одређивању да ли је боља опција убијање родитељског процесора ради поновног покретања система у следећем циклусу одржавања система који је већ заказан.

На Линуку како функционишу стања процеса?

Наравно, Линук мора пратити све апликације и демоне који се покрећу на вашем рачунару. Одржавање табеле процеса је један од начина којим се то постиже.
Ово је листа структура меморије језгра. Ова листа укључује унос за сваки процес који садржи неке информације о њему. Свака од структура табеле процеса садржи врло мало информација.

Они чувају ИД процеса, неколико других информација и показивач на блок за контролу процеса (ПЦБ).

На ПЦБ-у Линук складишти све информације потребне за тражење или подешавање за сваки процес. Како се процес креира, он се модификује, даје му време обраде, а затим уништава.

На Линук ПЦБ-у постоји преко 95 поља. Дефинисан је у структури задатка која има преко 700 редова. На ПЦБ-у се могу наћи следеће врсте информација:

Стања процеса су илустрована у наставку

Било шта од следећег може бити „стање процеса“:

Закључак

Осим ако нису део огромне хорде, зомбији нису толико штетни. Неколико њих није велика ствар, а брзо поновно покретање ће их очистити. Међутим, постоји једна ствар коју треба размотрити.

Линук архитектуре имају максималан број процеса и, као резултат тога, максималан број ИД бројева процеса. Када се постигне максималан број зомби процеса, нови процеси се не могу покренути.

Зомби процеси нису процеси; они су остаци мртвих процеса које њихов родитељски процес није правилно очистио. Међутим, ако приметите да одређена апликација или процес непрестано изриче зомбије, требало би да истражите даље.

Највероватније је то само лоше написан програм; у том случају можда постоји ажурирана верзија која се очисти након што је њено дете правилно обради.

Како приказати ОСД прекривач у целом екрану Линук апликација и игара
Играње игара преко целог екрана или коришћење апликација у режиму целог екрана без ометања може вам одсећи релевантне системске информације видљиве на...
Топ 5 карата за хватање игара
Сви смо видели и волели стримовање играња на ИоуТубе-у. ПевДиеПие, Јакесептицие и Маркиплиер само су неки од најбољих играча који су зарадили милионе ...
Како развити игру на Линуку
Пре деценију, није много корисника Линука предвидело да ће њихов омиљени оперативни систем једног дана бити популарна платформа за играње комерцијални...