Mi a zombi folyamatok?

129

Atop és a gui alapúSystem Monitor parancsokkal láthatom, hogy jelenleg több zombi folyamat van.

Mi a zombi folyamatok?

Ezek befolyásolják a rendszer vagy az alkalmazás zombik teljesítményét. Túl sok memóriát vagy memóriát használnak?

    
készlet Jesper 14.06.2011 00:27
forrás

3 válasz

152

A zombik DEAD folyamatok. Nem lehet "megölni" (nem lehet megölni a DEAD-ot). Minden folyamat végül meghal, és amikor zombikká válnak. Semmilyen erőforrást nem fogyasztanak, ami várható, mert halottak! A zombik oka tehát a zombi szülő (folyamat) képes lekérni a zombi kilépési állapotát és erőforrás-felhasználási statisztikáit. A szülő jelzi az operációs rendszert, hogy a váró () rendszerhívások egyikének használatával már nincs szüksége a zombi számára.

Amikor egy folyamat elpusztul, a gyermeket feldolgozó folyamatok az 1. folyamatszámú gyermekekké válnak, ami az init folyamat. Init "mindig" várja, hogy a gyermekek meghaljanak, úgyhogy ne maradjanak zombikként.

Ha van zombi folyamata, akkor azt jelenti, hogy a szülők nem vártak zombikra (lásd aps -l -ban megjelenített PPID-t). Három választási lehetősége van: Fix a szülőfolyamat (várjon); ölje meg a szülőt; vagy élni vele. Ne felejtsd el, hogy a vele való együttélés nem olyan nehéz, mert a zombik csak egy extra vonalat vesznek fel a PS kimenetében.

A zombik a Unix ps utasítás kimenetén azonosíthatók a STAT oszlopban lévő "Z" jelenlétében. A rövid idő alatt létező zombik általában hibát jeleznek a szülőprogramban. Más szivárgásokhoz hasonlóan néhány zombik jelenléte önmagában nem aggasztó, de súlyos problémát jelenthet, amely nehezebb terhek alatt súlyosbodik.

A zombik eltávolítása egy rendszerből, a SIGCHLD jelet kézzel küldhetjük a szülőnek, az kill parancs segítségével. Ha a szülőfolyamat továbbra is visszautasítja a zombit, akkor a következő lépés a szülőfolyamat eltávolítása. Amikor egy folyamat elveszti a szülőt, az init új szülővé válik. Az Init rendszeres időközönként végrehajtja a várakozó rendszerhívást, hogy minden zomit elnyerjen az initben, mint szülő.

Vannak árva folyamatok is, amelyek olyan számítógépes folyamatok, amelyek szülőprocessuma befejeződött vagy befejeződött.

A folyamat elavulttá válhat a távoli hívás során, amikor az ügyfélprobléma összeomlik a szerver kérése után.

Az árvák elszállítják a szerver erőforrásait, és potenciálisan bajba kerülhetnek egy szerverről (Ez a legnagyobb erőforrás-különbség a zombik és az árvák között (kivéve, ha látsz valami árva zombi filmet), de számos megoldás létezik az árvaprobléma problémájára:

  1. A megszüntetés a leggyakrabban használt módszer; ebben az esetben az árva folyamatot megölik.

  2. A reinkarnáció olyan technika, amelyben a gépek rendszeresen megpróbálják megtalálni a távoli számítások szüleit; mely ponton elárvult folyamatok megöltek.

  3. A lejárat olyan technika, amelyben minden egyes folyamathoz egy bizonyos időtartam van a befejezés előtt, mielőtt megölték. Ha szükséges, akkor a folyamat "kérje" több időt a befejezéshez, mielőtt lejár a megadott idő.

A folyamat is ugyanazon a gépen futhat el, mint a szülőprocessz. Egy UNIX-szerű operációs rendszerben minden árva eljárást azonnal elfogadnak a speciális "init" rendszerfolyamattal. Ezt a műveletet nevezik újbóli szülésre, és automatikusan megtörténik. Bár technikailag a folyamat az "init" folyamat szülőjeként működik, mégis árvafolyamatnak hívják, mivel az eredetileg létrehozott folyamat már nem létezik.

További információ:

link

link

link

Hogyan azonosítsuk és megölik a lógó folyamatot, amikor a rendszer lefagy és lassan reagál a felhasználói bevitelre?

Killing egy futó folyamat egy Ubuntu gépen távoli Windows gépből, amely LAN-ban van

    
válasz adott Luis Alvarado 14.06.2011 00:39
forrás
20

A zombi folyamatok (szintén mint<defunct>), egyáltalán nem valós folyamatok. Ezek csak bejegyzések a rendszermag folyamat táblázatban. Ez az egyetlen erőforrás, amelyet fogyasztanak. Nem fogyasztanak semmilyen processzort vagy RAM-ot. Az egyetlen zombi zavar veszélye a folyamat táblázatban elfogyott (acat /proc/sys/kernel/threads-max -ot használva megtekintheti, hogy hány bejegyzés van engedélyezve a rendszeren).

Csak akkor jelennek meg, ha a szülőfolyamatuk (vagyis a folyamat, amelyfork()'ed őket) életben van, de még nem hívta await() system függvényt. Ha a szülő meghal, a zombikwait()'ed for ainit szerint és eltűnnek.

    
válasz adott vartec 14.06.2011 11:36
forrás
6

Amikor egychild process véget ér, halálát a szülőjével közlik, hogy a szülő megtehesse a megfelelő lépéseket.

Aprocess arra vár, hogy szülője elfogadja visszatérési kódját egy zombi folyamat .

Jelenlegcompleted their execution, de aentry -banprocess table van.

    
válasz adott Prateek Joshi 14.10.2015 18:11
forrás