Hozzászólások
sziasztok,
csak fovesztes terhe mellett elbootolhato szerveren hogyan lehet kiloni a zombi processzeket?
a ps ezt mutatja roluk:
13726 ? Z 0:40 [java <defunct>]
koszi,
mogorva
- A hozzászóláshoz be kell jelentkezni
[quote:d0201e0897="mogorva"]sziasztok,
csak fovesztes terhe mellett elbootolhato szerveren hogyan lehet kiloni a zombi processzeket?
a ps ezt mutatja roluk:
13726 ? Z 0:40 [java <defunct>]
koszi,
mogorva
kemeny problema;)
ps fax-al nezg meg, hatha valami log rajta, ha azt kilovod ezt is lehet utana
ha IO-ra var (neha elofordul), es ha modulos a kernel, akkor az IO-val kapcsolatos modulok egyesevel valo rmmod, majd modprobe el szokta engedni, es utana kiloheto.
- A hozzászóláshoz be kell jelentkezni
$ ps fax | grep Z
\_ grep Z
\_ [process1 <defunct>]
\_ [process2 <defunct>]
Az, hogy esetleg IO-ra var (sajnos nem valoszinu) hogyan tudhato meg?
mogorva
- A hozzászóláshoz be kell jelentkezni
Legjobb tudomásom szerint zombi azt jelenti, hogy már kilépett, viszont a szülője még nem szabadította fel a kilépési információját. man 2 waitpid.
Tehát lődd ki a szülőjét, és eltűnik pereputtyostól. Ha nincs szülője (volt, csak a child setsid()-et mondott, stb.), akkor viszont ki lehet tűzni az IJ zászlót, legalábbis én a reboot-nál elegánsabbat nem tudok erre az esetre. Esetleg az Alt-SysRq 'kIll' parancsát érdemes megnézni, ha konzolnál vagy, de ezt még nem próbáltam.
- A hozzászóláshoz be kell jelentkezni
[quote:fa062a50eb="mogorva"]Az, hogy esetleg IO-ra var (sajnos nem valoszinu) hogyan tudhato meg?
A ps 'D'-vel jelzi. man ps:
PROCESS STATE CODES
D uninterruptible sleep (usually IO)
R runnable (on run queue)
S sleeping
T traced or stopped
W paging (2.4 kernels and older only)
X dead
Z a defunct ("zombie") process
- A hozzászóláshoz be kell jelentkezni
Koszi a valaszokat, valszeg reboot lesz.
Tenyleg semmi mod nincs arra, hogy a process table-t kezzel kipucolja az ember? Vagy ez annyira extrem kivansag, hogy fel sem merul pl. a kernel fejlesztoknel, mint lehetoseg?
mogorva
- A hozzászóláshoz be kell jelentkezni
gsimonnak van igaza, a zombie (Z) és az IO-ra vár (D) két egymást kizáró állapot. A zombi processz már kilépett, csak adminisztratíve még nyilvántartja őt a rendszer, foglal mondjuk 1kB-ot vagy mittomménmennyit, jelképeset, és akkor fog eltűnni ha vagy kilövöd a szülőjét, vagy a szülő végrehajt rá egy waitpid()-et.
- A hozzászóláshoz be kell jelentkezni
[quote:7c03f8e54f="mogorva"]Tenyleg semmi mod nincs arra, hogy a process table-t kezzel kipucolja az ember? Vagy ez annyira extrem kivansag, ...
Az vele a gond, hogy sok az egymásrahatás a processzek között, és nem mindig egyértelmű, hogy mit is kellene csinálni azon kívül, hogy elfelejtünk egy processzt. Csak példaként:
- Kell-e értesíteni a szülőjét, hogy kihalt, ill. fenn kell-e tartani a kilépési státuszt (zombie állapot)
- Ha van megnyitva socket, és a kimenő pufferében van még el nem küldött adat, ki kell-e küldeni, ill. mennyit szabad várni a kiküldésre.
- Ha a processz használ megosztott memóriát (shared mem), akkor azzal mi legyen, pláne, ha ő az utolsó, aki tartja.
- Ha tart fogva egy (több...) szemafort, de épp egy másikra vár, mi legyen a már lefoglaltakkal, pl. milyen sorrendben kell felszabadítani, hogy a többi processz ne szakadjon össze.
- Ha épp egy kernel művelet közepén jár (pl. karcos cd-t akar olvasni), mi legyen a kernel által épp használt átmeneti lock-okkal, memóriával, stb.
- Ha neadj'Isten pont kernel modulból kihozott userspace hook, akkor a modult is ki kell-e lőni vele együtt, és ha igen, ki rak rendet utána (beinstallált interrupt handlerek, stb.)
- Ha filerendszer-hook (samba, nfs daemon), mi legyen azokkal, akik használják (nem csak a helyi gépen...)
- Ha setuid-os volt a progi, és pl. bemountolt valamit, le kell-e/szabad-e mountolni, mert a user tutira nem fogja tudni.
Szóval nem egyértelmű, és szvsz nem igazán lehetne úgy kilőni valamit, hogy utána megbízhatóan működőképes maradjon a rendszer. Hasonló nyűgök vannak egyébként a --force umount-tal és modul eltávolítással is, nem véletlen, hogy fázik tőlük mindenki, és hogy elég veszélyes is mindkettő.
- A hozzászóláshoz be kell jelentkezni
[quote:4a30d788d4="egmont"]gsimonnak van igaza, a zombie (Z) és az IO-ra vár (D) két egymást kizáró állapot. A zombi processz már kilépett, csak adminisztratíve még nyilvántartja őt a rendszer, foglal mondjuk 1kB-ot vagy mittomménmennyit, jelképeset, és akkor fog eltűnni ha vagy kilövöd a szülőjét, vagy a szülő végrehajt rá egy waitpid()-et.
Elvileg, ha jol emlekszem, akkor a szulojet vesztett processzeket az init veszi magahoz es idorol idore elintezi oket... Thehat ha eleget varsz, akkor ezek a fajta Zombik eltunnek...
De ha rosszul emlekszem, valaki cafoljon meg...
Zsiraf
- A hozzászóláshoz be kell jelentkezni
gsimon
ebben mind igazad van, de ha vmi mar zombi, akkor ki gondoskodik az utana maradt szemet eltakaritasarol? jo, igy biztosan stabilabb marad a rendszer, mintha en nyulok bele a magikus cpt (clean process table) paranccsal (amit most talaltam ki, mielott barki keresni kezdi!), de neha nagyon gaz, hogy vmi nem bir elindulni, mert a sajat zombijarol azt hiszi, hogy az o maga, a gep elbootolasahoz meg az atyauristen engedelye is kell. B-/
szaszg
errol en is olvastam, de ezt az idotartamot nem lehet vhogy szabalyozni?
mogorva
- A hozzászóláshoz be kell jelentkezni