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.
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
????
Tak, meget godt bidrag, jeg vil gemme kommandoerne for at foretage periodiske kontroller.
Tak, dejlig artikel.
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
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.
Sandheden syntes mig en ganske interessant kommentar. Meget mere end stillingen
tak meget interessant.
fremragende artikel tak
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
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 …….
I KDE med control + escape-system går aktiviteter ud, og vi kan hurtigt dræbe disse zombier.
En korrektion, det er en ZOMBI ikke ZOMBIE proces
Zombie er på engelsk
Zombi på spansk
Luksus, tak!
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.