Bejegyzés olvasása innen: élénk Eszembe jutott, hogy egy fórumban valaki segítséget kért, mivel a rendszere lassú volt, néhány megoldás a folyamatokra összpontosított.
A folyamatok főbb állapotai a Linuxban a következők:
Alvás (S) : Folyamatok, amelyek sorra várnak a végrehajtásra.
Futás (R) : Futtatott folyamatok.
Várakozás (D) : A Belépés / Kilépés művelet befejezésére váró folyamatok.
Zombi (Z) : A folyamatok, amelyek befejeződtek, de továbbra is megjelennek a folyamat táblázatban. Ezeket programozási hibák okozhatják, és a lassú vagy problémákat okozó rendszer tünetei lehetnek.
A zombi folyamat olyan folyamat, amely soha nem kapott jelet az őt létrehozó szülői folyamattól, a gyermek folyamat az, amely egy magasabb szintű folyamatból származik, amelyet szülői folyamatnak neveznek, és amely felelős a jelek továbbításáért a gyermek folyamatai felé. generálja annak jelzésére, hogy élettartama lejárt.
Ezeket programozási hibák okozhatják, és a lassú vagy problémákat okozó rendszer tünetei lehetnek. Ez a helyzet általában azért fordul elő, mert valamilyen konfigurációt nem gondolt a fejlesztő.
A Wikipédiában megteheti tovább ezekről a folyamatokról.
A legfelső parancs végrehajtásával valós időben láthatjuk a rendszerben végrehajtott folyamatokat, és jelzi, hogy vannak-e zombi állapotban, de nem jelzi, hogy melyikről van szó.
Az összes folyamat megtekintéséhez írja be a terminált: ps to, és csak a zombikat látni: 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
Ha a folyamatok felsorolásakor az egyik Z státusszal jelenik meg, az azt jelenti, hogy egy zombi, ami viszont azt jelenti, hogy az alkalmazás nincs megfelelően megoldva vagy hibákat tartalmaz, tudva, hogy PID-jét ki lehet küszöbölni, ha a terminálban végrehajtunk egy hasonló parancsot, ebben a példában:
alf @ Alf ~ $ ölni -9 1945
Ha sok zombi folyamatod van, vagy legalább egynél több, használhatod a következő parancsot, amely megöli őket, ez csak akkor működik, ha zombi folyamatok nélkül futtatod, semmi sem fog történni:
alf @ Alf ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{print $ 2}' ''
Üdvözlet
🙁
Köszönöm, nagyon jó közreműködéssel, menteni fogom a parancsokat, hogy rendszeresen ellenőrizhessem őket.
Köszönöm, szép cikk.
Néhány pontosítás a cikkeddel kapcsolatban:
A "Zombie process" kifejezés technikailag nem megfelelő, és azoknak, akiknek van egy kis tapasztalatuk a GNU / Linux-ról, kerülniük kell a használatát, mivel önmagában nincs folyamat, de ez csak egy olyan folyamatra való hivatkozás, amely már nem létezik a rendszerben és nem adta ki az azonosítóját.
A "zombi folyamat" valójában a folyamatazonosító (folyamatleíró) bejegyzése a leképezési táblában, éppen ez, így nem fogyaszt erőforrásokat néhány bájt memórián túl, amelyet a rendszer a folyamattábla nyomon követésére használ.
Az egyetlen probléma, amely a ghost (vagy zombie) rendszerleíró leírókkal lehet, az, hogy ha ezek túl gyorsan szaporodnak, akkor elméletileg elfoglalhatják a teljes folyamatleíró kiosztási táblázatot, így a rendszer új helyek nélkül marad, így potenciálisan lehetetlen új programokat futtatni - amelyek rögzítik a folyamataikat - végül leteszik a gépet.
Erre azonban szinte lehetetlen kerülni, mivel a 32 bites rendszerekben 32767 64 szóköz áll rendelkezésre a folyamatok (ritkán vagy soha nem használt) regisztrálásához, és ennek kétszerese egy XNUMX bites rendszerben.
Az egyetlen módja a rendszer összeomlásának a rosszul eltávolított halott folyamatokkal: a folyamatok létrehozása és gyors megölése a folyamatleíró megfelelő tisztítása nélkül (vagyis "zombi folyamatok" létrehozása), de valljuk be, ha valaki össze akar ütni sokkal közvetlenebb módok léteznek ennél. gyorsan elkezdeni új folyamatokat létrehozni exponenciális módon, amelyek elzárják a rendszert és felakasztják; ennek egyik módja villabombával:
: () {: |: &};:
Az /etc/security/limits.conf fájl megfelelő beállításával teheti a rendszert viszonylag ellenállóvá egy villabomba ellen, bár figyelembe kell venni, hogy minél inkább korlátozzuk az új folyamatok létrehozásának lehetőségét, kevesebb alkalmazást tudunk majd futtatni egyidejűleg a rendszerünkön. Ez azonban érvényes eszköz minden paranoid sziszadmin számára, aki nagyon finom irányítást akar a rendszere felett!
Ez a cikk jó információkat tartalmaz az érvénytelen folyamatleírókról:
http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
És ebben egyértelmű magyarázat található a villabomba működéséről: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work
Salu2
msx: «A„ zombi folyamat ”kifejezés technikailag nem megfelelő, és azoknak, akiknek van egy kis tapasztalatuk a GNU / Linux használatával kapcsolatban, kerülni kell a használatát ...» Ha ha ha. Csak valami nagyobb, mint a büszkeséged: a rossz ízlésed. Hé, rossz ízlésű, amit tettél, ha előadást akarsz tartani, bekerülni a karra, vagy felvenni a saját blogodat, és megírni, amit akarsz, de azért jön ide, hogy helyreigazítsa a lakást jó Alf-re .
Az igazság számomra elég érdekes megjegyzésnek tűnt. Sokkal többet, mint a poszt
nagyon érdekes köszönöm.
kiváló cikk köszönöm
MSX
"A" zombi folyamat "kifejezés technikailag nem megfelelő, és azoknak, akiknek van egy kis tapasztalatuk a GNU / Linux-ban, kerülni kell a használatát»
Értesítenünk kell a fejlesztőket, mivel mint látni fogják, a zombi kifejezést is használják, ott olvastam a konzolon.
Üdvözlet
Gratulálok, nagyon jó cikk, mindig is kételkedtem abban, hogy ők a PZ-k, de soha nem volt időm kivizsgálni, most megyek az oldalra, és köszönetet találok a válasznak ...
A KDE-ben a vezérlés + menekülési rendszer tevékenységei kialszanak, és gyorsan meg tudjuk ölni ezeket a zombikat.
Javítás, ez egy ZOMBIE, nem egy ZOMBIE folyamat
A Zombie angolul szól
Zombi spanyolul
Luxus, köszönöm!
Először is, a zombi folyamat kifejezés teljesen helyesnek tűnik. A kifejezés is a legkevésbé fontos.
A lényeg az, hogy amint az msx jelzi, és ugyanaz a wikipédia (olvastam a cikket), a zombi folyamat valóban halott.
«Amikor egy folyamat véget ér, az összes memória és a hozzá tartozó erőforrások el lesznek hivatkozva, így más folyamatok is felhasználhatják őket. Egyébként a folyamattábla folyamatbejegyzése továbbra is megmarad »
Vagyis a folyamat már nem foglalja el a rendszer erőforrásait, ezért a rendszer terhelése minimális, amint azt az msx magyarázza.
Az egyetlen dolog azonban, hogy érvénytelen bejegyzés van a folyamattáblában ... ami, ha több ezer van belőle, talán terhelés lenne (elvégre a processzornak el kell olvasnia a folyamattáblát, és egy sok haszontalan információ) a rossz programozási gyakorlatok tükrözése mellett (valaki rosszul elkészített alkalmazásokat készít).
De önmagában a hozzászólás magyarázata nem annyira helytálló, és a helyes lenne az msx által adott.