Zombiju process. Ne visi ir dzirdējuši par šo interesanto, tomēr biedējošo vārdu, kas saistīts ar Linux operētājsistēmu. Personālajā datorā zombiju procesi, iespējams, neapdraud parastu lietotāju, taču, runājot par Linux serveriem, šie procesi ir jāidentificē un jāpārtrauc.

Šādi procesi var radīt problēmas ar jūsu sistēmas procesu tabulu un, savukārt, traucēt jūsu mašīnas pareizai darbībai. Tāpēc šajā rakstā mēs detalizēti apspriedīsim zombiju procesus, kā arī visaptverošu rokasgrāmatu par zombiju procesu atrašanu un nogalināšanu Linux mašīnā.

Kas ir zombiju procesi?

Bet pirms visa tā ir svarīgi zināt, kādi patiesībā ir zombiju procesi. Tie nav nekas cits kā beigti un nederīgi procesi, kas aizņem vietu uz sistēmas procesu galda. A procesa vadības bloks vai PCB ir datu struktūra, kurā tiek glabāta informācija, kas saistīta ar atsevišķiem procesiem, kas darbojas jūsu sistēmā.

Procesa tabula sastāv no procesa ID, saites uz PCB un citas noderīgas informācijas, kas saistīta ar procesu. Zombiju procesiem ir savi procesu ID un informācija par atmiņas pārvaldību. Tā kā Linux OS ir ierobežots pieejamo procesu ID skaits, citi procesi nevar izmantot PID, kamēr zombiju process nav apstājies.

Lai gan viens vai divi zombiju procesi jūsu datorā neradīs traucējumus vai veiktspējas problēmas, a liels skaits šādu procesu var kaitēt jūsu sistēmas darbplūsmai, pārpludinot procesu tabulu un resursiem.

Kas izraisa zombiju procesus Linux?

Lai detalizēti izprastu zombiju procesa galveno cēloni, jums būs jāapgūst, kā Linux sākas un apstājas. Linux operētājsistēma uzrauga visus datorā notiekošos procesus un dēmonus. The procesa tabula ir struktūru saraksts, kas satur visus procesus, kas pašlaik darbojas jūsu datorā.

Katrs procesa tabulas procesa ieraksts sastāv no saites uz procesa vadības bloks no šī konkrētā procesa. PCB saglabā informāciju, kas saistīta ar konkrēto procesu. Šī informācija ietver:

  1. Procesa stāvoklis: Procesa pašreizējais stāvoklis
  2. Procesa numurs: Unikāls numurs, ko izmanto procesa identificēšanai
  3. Programmu skaitītājs: Satur informāciju par nākamo instrukciju
  4. Reģistrē: Visu procesā izmantoto CPU reģistru saraksts
  5. Atvērt failu sarakstu: Faili, kurus izmanto process
  6. Informācija par CPU plānošanu: Satur informāciju, kas saistīta ar procesora laiku un procesam piešķirtajiem resursiem
  7. Informācija par atmiņas pārvaldību: Iekļauj informāciju par procesa izmantoto atmiņas apjomu
  8. I / O informācija: Procesā izmantoto ievades vai izvades ierīču saraksts

Lai aprakstītu visus savus procesus, Linux izmanto šādus procesa stāvokļus.

  • R: Skriešanas process
  • S: Miega process
  • D: Nepārtraukts miega process
  • T: Izbeigts process
  • Z: Zombiju process

Ikreiz, kad process pabeidz piešķirto uzdevumu, tā procesa stāvoklis tiek iestatīts kā Zombijs vai Z. Katram procesam ir vecāku process, kas izsauc nosaukumu funkciju saimi pagaidiet () kas gaida procesa stāvokļa maiņu. Piemēram, ja procesa stāvoklis mainās no Skriešana uz Zombijs, pagaidiet () metode tiks aktivizēta.

The pagaidiet () metode parasti izdzēš ar šo zombiju procesu saistīto procesa vadības bloku un pēc tam no procesa tabulas noņem šī procesa ierakstu.

Bet dažreiz programmas sliktās attīstības dēļ vecāku process to neizsauc pagaidiet () funkciju. Tā rezultātā sistēma neizdzēš zombiju procesa PCB. Arī procesa tabulas ieraksts šim konkrētajam procesam paliek neskarts.

Tas piešķir zombiju procesam bezgalīgu mūžu. Tā kā sistēma nevar nogalināt procesu, procesa ieraksts nekad netiek izdzēsts, un PID nekad netiek atbrīvots.

Uzzināt vairāk: Veidi, kā nogalināt nereaģējošas programmas Linux

Kā atrast zombiju procesus?

Pirmais solis zombiju procesu noņemšanai jūsu sistēmā ir analizēt, kurš process ir Zombijs procesa stāvoklis. Kaut arī šos procesus nevarēsit nogalināt tieši, jo sistēma tos jau ir izņemusi no atmiņas, varat nogalināt ar tiem saistīto vecāku procesu.

Pirmkārt, jums jāpārbauda, ​​vai jūsu sistēmas procesu tabulā ir zombiju process. To var viegli izdarīt, izmantojot tops komandu. Vienkārši atveriet termināli un ierakstiet:

tops

Jūs redzēsiet izvadi, kas ir līdzīgs šim. Ievērojiet zombiju procesu skaitu termināļa loga augšdaļā. Ja izeja ir nulle, tad jums nekas nav jāuztraucas.

Izmantojot cauruļvadus, varat uzskaitīt informāciju, kas saistīta ar šiem zombiju procesiem ps komanda ar egrep. Egrep ir Linux grep komandas paplašinājums, kas visus modeļus uztver kā paplašinātu regex virkni.

Saistīts: Iesācēju ceļvedis regulārām izteiksmēm ar Python

Ierakstiet šādu komandu, lai uzskaitītu visus zombiju procesus:

ps aux | egrep "Z | vairs nedarbojas"

Iepriekš minētā komanda meklēs rindas, kurās ir vai nu Z vai vairs nedarbojas izvadē, ko ģenerē komanda ps. Izeja sastāv no zombiju procesu saraksta, kas darbojas jūsu sistēmā.

Zombiju procesu nogalināšana, izmantojot komandu kill

Tagad, kad jūs zināt, kuri zombiju procesi pašlaik apēd jūsu sistēmas resursus, ir pienācis laiks šos procesus nogalināt.

Kaut arī vienkāršākais veids, kā nogalināt zombiju procesus, ir restartēt datoru, dažreiz tā nav iespējama iespēja, it īpaši, ja administrējat serveri.

Lai nogalinātu zombiju procesus, neizslēdzot serveri, pierakstiet jebkura zombiju procesa procesa ID. No iepriekšējās sadaļas mēs varam redzēt, ka zombiju procesa PID bija 18614. Pēc tam izmantojiet šo PID, lai atrastu vecāku procesa ID.

ps -o ppid = -p 18614

Izeja:

18613

Pārbaudiet, vai pastāv vecākā procesa ID, izmantojot ps komandu.

ps -e | grep 18613

Tagad, kad esam apstiprinājuši vecāku procesa esamību, ir pienācis laiks to nogalināt. Iet garām -PIESAKIES karogs ar nogalināt komandu šādi:

sudo kill -SIGKILL 18613

Kad esat nogalinājis vecāku procesu, sistēma izdzēsīs zombiju procesu un automātiski noņems to no procesu tabulas.

Efektīva procesu pārvaldība Linux

Katram sistēmas administratoram ir jānosaka prioritāte uzraudzības procesiem, kas darbojas Linux mašīnā. Kaut arī zombiju procesi ne vienmēr ir kaitīgi jūsu sistēmai, tie var izraisīt veiktspējas problēmas, ja to ir daudz.

Ja esat iesācējs Linux lietotājs un jums nav ne mazākās nojausmas, kā Linux operētājsistēma pārvalda procesus, vispirms ir labi uzzināt, kas ir procesi.

E-pasts
Kas ir process Linux?

Procesu un darbu izpratne ir galvenais aspekts, lai tiktu galā ar Linux. Lūk, kas jums jāzina.

Lasiet Tālāk

Saistītās tēmas
  • Linux
  • Linux
  • Apstrāde
Par autoru
Deepesh Sharma (Publicēti 45 raksti)

Deepesh ir MUO Linux jaunākais redaktors. Viņš ir rakstījis informatīvo saturu internetā vairāk nekā 3 gadus. Brīvajā laikā viņam patīk rakstīt, klausīties mūziku un spēlēt ģitāru.

Vairāk no Deepesh Sharma

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!

Vēl viens solis !!!

Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.

.