linuksoidų patarimai

Kaip nužudyti zombį

2009-11-01, kiras

Zombių būna ne vien Holivude, linukse jie taip pat kartais apsigyvena. Juos aptikti nėra sunku, bet nužudyti problematiška, mirti jie nesiteikia. Juk jie zombiai! Skirtingai nuo Holivudiškų, linuksiniai zombiai nekenksmingi ir neužkrečiami.

Zombiais linukse vadinami procesai, kurie jau nustojo veikti, bet įrašas iš procesų sąrašo dar nepašalintas. Tą įrašą pašalinti turėtu „motininis“ (parent) procesas, kuris sukūrė „dukterinį“ (child) procesą, bet pastarasis nusibaigė anksčiau nei buvo tikimąsi. Jei viskas tvarkoje, zombis po kurio laiko bus pašalintas. Bet kartais, dėl programinių klaidų, zombis lieka kabėti.

Kaip zombius aptikti? Tikriausiai žinot komandą top. Pasileiskit, ir Tasks eilutės gale bus įrašas „kažkiek zombie“. Štai, pas mane yra net vienas toks:

zombie

Tikriausiai apie jį norėsite sužinoti daugiau informacijos, koks procesas nenori mirti ir iš kur jis atsirado? Informaciją apie zombį parodys ši komanda:

$ ps -el | grep Z

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 Z 0 17607 1671 0 80 0 - 0 ? ? 00:00:00 dhcpcd <l;defunct<

Pas mane niekaip nemiršta dhcpcd procesas, kurio ID 17607. Kad išsiaiškinti zombio gimdytoją, pirmiausia žiūriu į PPID (Parent Process ID) ir tada ieškau procesu su šiuo ID:

$ ps -el | grep 1671

1 S 0 1671 1 0 80 0 - 42278 ? ? 00:08:44 wicd
0 S 0 1675 1671 0 80 0 - 20296 ? ? 00:02:44 wicd-monitor
4 Z 0 17607 1671 0 80 0 - 0 ? ? 00:00:00 dhcpcd

Štai kas pagimdė mano zombį, wicd ─ WiFi demonas! Pabandykim zombį nužudyti:

$ sudo kill -9 17607

Deja, zombiai taip lengvai nemiršta. Šis negyvėlis vis dar gyvas :( Kad nužudyti zombį linukse, žudyti reikia ne patį zombį bet jo gimdytoją! Bet ne viskas taip paprasta, jei zombio gimdytojas yra init procesas (PID numeris 1), tai nužudę jį užmušim visą linuksą. Bus tas pats kaip nuspausti reset mygtuką. Mano atveju, nužudžius wicd nieko baisaus nenutiks, tik neturėsiu interneto. Ir kai paleisiu wicd vėl, jis sukurs tą patį dhcpcd procesą, kuris dėl kažkokios smulkios klaidelės vėl taps zombiu.

Tai ką daryti? Ogi nieko. Linuksiniai zombiai smegenų nevalgo ─ nenaudoja atminties ir nerija procesoriaus resursų. Viskas ką jie daro, tai užima papildomą eilutę procesų sąraše, nieko daugiau.

Truputį daugiau apie zombius skaitykit čia [EN]. Ir dar čia, bendrai apie procesus [RU].

5 komentarai

 

# Pawka, pawka.linija.net

Heh, prisiminiau dabar, kaip per OS paskaitų laboratorinius darbus, sėdėdavom auditorijoj prie kompų ir dirbdavom prie klasterio. Jei pamatydavom kad yra zombie procesų, spręsdavom kurie čia iš auditorijoje esančių grupiokų yra tie zombiai :-D

[]

 

# FreeMaN, google.com

Nu toks „superinis” irasas, kad nerandu zodziu :)
nezinau, kaip kiti ko iesko eidami skaityt tokiu blogu, bet as ieskau kazko naujo ir bent jau naudingo, o randu :) susilaikysiu nuo grieztesniu komentaru ;)

[]

 

# kiras,

o tu komentuok, komentuok! Susilaikymas kenkia sveikatai :)

[]

 

# neblogas

pas mane lygiai toks pat zombis :D

[]

 

# X

FreeMaN ko tu ten windowsose ieskai ? :D

[]