Zombie processer

Læser et bidrag fra Elav Jeg huskede, at nogen i et forum bad om hjælp, da deres system var langsomt, nogle af løsningerne fokuserede på processer.

Hovedtilstandene for processerne i Linux er:
Sovende (S) : Processer, der venter på, at deres tur skal udføres.
Løb (R) : Processer, der kører.
Venter (D) : Processer, der venter på, at en indgangs- / udgangsoperation afsluttes.
Zombie (Z) : Processer, der er afsluttet, men som fortsat vises i procestabellen. De kan skyldes programmeringsfejl og kan være et symptom på et langsomt eller problemfremkaldende system.

En Zombie-proces er en, der aldrig modtog et signal fra den overordnede proces, der skabte den, en barneproces er en, der har sin oprindelse i en højere proces, kendt som den overordnede proces, der er ansvarlig for at sende signalerne til barnets processer genereret af det for at indikere, at deres levetid er afsluttet.

De kan skyldes programmeringsfejl og kan være et symptom på et langsomt eller problemfremkaldende system. Denne situation opstår normalt, også fordi en del konfiguration ikke blev overvejet af udvikleren.

I Wikipedia kan du læs mere om disse processer.

Ved at udføre den øverste kommando kan vi se i realtid de processer, der udføres i systemet, og det vil indikere, om der er nogen i en zombie-tilstand, men det indikerer ikke, hvilken der er.

proces

For at se alle processerne skal du skrive terminalen: ps auxog kun at se zombierne: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

Z 1945

Hvis man, når man viser processerne, vises med status Z, betyder det, at det er en zombie, hvilket igen betyder, at applikationen ikke er godt løst eller har fejl, idet man ved, at dens PID kan elimineres ved at udføre en terminal i terminalen, der ligner, i dette eksempel: 

alf @ Alf ~ $ kill -9 1945

Når du har mange zombieprocesser eller i det mindste mere end en, kan du bruge følgende kommando, der dræber dem, det fungerer kun for det, hvis du kører det uden at have zombieprocesser, sker der intet:

alf @ Alf ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{print $ 2}' ''

hilsen


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   passende sagde han

    ????

  2.   Oscar sagde han

    Tak, meget godt bidrag, jeg vil gemme kommandoerne for at foretage periodiske kontroller.

  3.   Josh sagde han

    Tak, dejlig artikel.

  4.   MSX sagde han

    Et par afklaringer vedrørende din artikel:

    Udtrykket "Zombie-proces" er teknisk uhensigtsmæssigt, og de af os, der har lidt erfaring med GNU / Linux, bør undgå at bruge det, da der ikke er nogen proces, der kører i sig selv, men det er kun en henvisning til en proces, der ikke længere findes i systemet og han frigav ikke sin identifikator.

    En "zombie-proces" er faktisk posten i kortlægningstabellen for procesidentifikatoren (procesbeskrivelse), netop det, så det ikke forbruger ressourcer ud over et par hukommelsesbyte, systemet bruger til at holde styr på proces tabel.

    Det eneste problem, der kan være med ghost (eller zombie) registerbeskrivere, er at hvis de gyder for hurtigt, kunne de teoretisk set besætte hele procesdeskriptorallokeringstabellen, hvilket efterlader systemet uden plads til nye poster, så det potentielt ville være umuligt at køre nye programmer - der registrerer deres processer - til sidst hænger maskinen op.

    Dette er dog næsten umuligt at ske, da der i 32-bit-systemer er 32767 pladser til registrering af processer (sjældent eller aldrig brugt) og dobbelt så stort i et 64-bit-system.

    Den eneste måde at få et system til at gå ned med døde processer, der er dårligt fjernet, er at oprette processerne og dræbe dem hurtigt uden korrekt rengøring af procesbeskrivelsen (dvs. skabe "zombieprocesser"), men lad os indse det, hvis nogen vil hænge et system der er meget mere direkte måder end det. at begynde at oprette nye processer hurtigt på en eksponentiel måde, der blokerer systemet og hænger det op; en af ​​måderne at opnå dette på med en gaffelbombe:

    : () {: |: &};:

    Du kan gøre systemet relativt modstandsdygtigt over for en gaffelbombe ved at konfigurere /etc/security/limits.conf korrekt, selvom det skal tages i betragtning, at jo mere vi begrænser muligheden for at oprette nye processer, vil vi være i stand til at køre færre applikationer samtidigt på vores system. Det er dog et gyldigt værktøj til alle paranoide sysadminer, der ønsker at have en meget fin kontrol over deres systemer!

    Denne artikel har god info om ugyldige procesbeskrivere:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    Og i dette er der en klar forklaring på, hvordan en gaffelbombe fungerer: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele sagde han

      msx: «Udtrykket" Zombie-proces "er teknisk upassende, og de af os, der har lidt erfaring med GNU / Linux, bør undgå at bruge det ...» Ha ha ha. Der er kun noget større end din stolthed: din dårlige smag. Hej, hvad du gjorde er i dårlig smag, hvis du vil holde et foredrag, få en på fakultetet eller læg din egen blog og skriv, hvad du vil, men at komme her for at rette lejligheden til den gode Alf er virkelig i dårlig smag.

      1.    Ferdinand Rojas sagde han

        Sandheden syntes mig en ganske interessant kommentar. Meget mere end stillingen

  5.   platonov sagde han

    tak meget interessant.

  6.   rådner87 sagde han

    fremragende artikel tak

  7.   Alf sagde han

    MSX
    «Udtrykket" Zombie-proces "er teknisk upassende, og de af os, der har lidt erfaring med GNU / Linux, bør undgå at bruge det»

    Vi bliver nødt til at underrette udviklerne, da som du vil se, bruges udtrykket zombie også, der læste jeg det på konsollen.

    hilsen

  8.   By sagde han

    Tillykke, meget god artikel, jeg havde altid været i tvivl om, at de var PZ'erne, men jeg havde aldrig haft tid til at undersøge, nu går jeg til siden, og jeg støder på svaret tak …….

  9.   truko22 sagde han

    I KDE med control + escape-system går aktiviteter ud, og vi kan hurtigt dræbe disse zombier.

  10.   Regn sagde han

    En korrektion, det er en ZOMBI ikke ZOMBIE proces
    Zombie er på engelsk
    Zombi på spansk

  11.   elynx sagde han

    Luksus, tak!

  12.   Roberto sagde han

    For det første synes udtrykket zombieproces helt korrekt. Udtrykket er også det mindst vigtige.
    Pointen er, at som msx indikerer, og den samme wikipedia (jeg læste artiklen) er zombieprocessen virkelig død.
    «Når en proces er færdig, henvises al dens hukommelse og tilknyttede ressourcer, så de kan bruges af andre processer. Under alle omstændigheder forbliver procesindtastningen i procestabellen stadig »
    Det vil sige, processen tager ikke længere systemressourcer, derfor er belastningen på systemet minimal som forklaret af msx.
    Det eneste, den har, er imidlertid en ugyldig post i procestabellen ... som, hvis der er tusindvis af dem, kan det være en belastning (når alt kommer til alt, skal processoren læse procestabellen, og den vil læse en masse ubrugelig information) ud over at afspejle dårlig programmeringspraksis (nogen laver dårligt lavede applikationer).
    Men i sig selv er forklaringen på indlægget ikke så korrekt, og den rigtige ville være den, der blev givet af msx.