Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-01-10 17:57:00

  mariaczi - Użytkownik

mariaczi
Użytkownik
Zarejestrowany: 2007-10-02

Jak zlikwidowac (ubić) procesy zombie

Witam.

Skrypt rosinfo wygenerował mi duża liczbę procesów zombie typu

Kod:

[apache2] <defunct>

Jest tez

Kod:

[init] <defunct>

Jak sie tych procesow pozbyc? "kill -9", "kill -6" na nie nie dziala.

Offline

 

#2  2009-01-10 20:46:39

  keddie - Użytkownik

keddie
Użytkownik
Skąd: localhost
Zarejestrowany: 2008-04-22

Re: Jak zlikwidowac (ubić) procesy zombie

Jeśli nie pomaga ubicie parent procesu to zawsze możesz zrestartować maszynkę ;]

Offline

 

#3  2009-01-10 20:53:52

  mariaczi - Użytkownik

mariaczi
Użytkownik
Zarejestrowany: 2007-10-02

Re: Jak zlikwidowac (ubić) procesy zombie

Na nieszczęście parenta nie ma i przejął go init, który jak wspomnialem też jest zombie. Oprocz init w zombie jest tez poprawnie dzialajacy.
Restart to ostatecznosc... tylko czy sie obejdzie bez niego :|

Offline

 

#4  2009-01-10 21:07:59

  NIC - Członek DUG

NIC
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-12-25
Serwis

Re: Jak zlikwidowac (ubić) procesy zombie

Ja proponuję posłać im jeden z sygnałów: STOP, HUP, INT i dopiero skillować. Zwykle działa gdy samo kill nie działa.

Być może odpowiedź jest gdzieś np. w /proc... Ale nawet root nie może stamtąd chyba nic usunąć...

To init może być zombie? Chyba nie...

Ostatnio edytowany przez NIC (2009-01-10 21:08:55)


Stronka-dom: http://titek.victorygames.pl
Jabber: nic@jabster.pl
Hobby: kompilowanie Linuksa, Bluetooth
Dystrybucja: żadna, bliski krewny LFS, składak

Offline

 

#5  2009-01-10 21:58:08

  mariaczi - Użytkownik

mariaczi
Użytkownik
Zarejestrowany: 2007-10-02

Re: Jak zlikwidowac (ubić) procesy zombie

NIC możesz wskazać jak to uczynić?

Nie może być, a jednak...

Kod:

~# ps -ef | grep defunc | head -n 30
root      3757     1  0  2008 ?        00:00:07 [sshd] <defunct>
root      7982     1  0  2008 ?        00:00:00 [udevd] <defunct>
root     28648     1  0  2008 ?        00:44:02 [lstatd] <defunct>
root      5890     1  0  2008 ?        00:00:00 [apache2] <defunct>
root     12623     1  0 Jan03 ?        00:01:49 [syslog-ng] <defunct>
root     32532     1  0 Jan03 ?        00:00:00 [init] <defunct>
root     32596     1  0 Jan03 ?        00:00:00 [dpkg-query] <defunct>
root     32703     1  0 Jan03 ?        00:00:00 [gzip] <defunct>
www-data 32745     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data   574     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data   938     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data   956     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data   981     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data   984     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data   987     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1004     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1033     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1036     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1039     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1061     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1087     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1090     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1093     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1110     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1135     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1138     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1141     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1158     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1679     1  0 Jan03 ?        00:00:00 [php] <defunct>
www-data  1682     1  0 Jan03 ?        00:00:00 [php] <defunct>

Edit: To tylko czesc z ponad 16k zombie.

Ostatnio edytowany przez mariaczi (2009-01-10 21:58:50)

Offline

 

#6  2009-01-10 22:22:43

  NIC - Członek DUG

NIC
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-12-25
Serwis

Re: Jak zlikwidowac (ubić) procesy zombie

No jak coś z initem jest to lepszy byłby restart... Bo inita może osierocić tylko jądro... Jeśli może...

Z mana:

Processes marked <defunct> are dead processes (so-called "zombies") that remain because their parent has not destroyed them properly.
       These processes will be destroyed by init(8) if the parent process exits.

Więc lepiej mieć tego inita.

Albo spróbuj zagadać do inita... init 2 czy jak kto tam woli.

PS. U Ciebie PPID inita jest równy 1 (init z synem init? masz inne inity?)?? U mnie init jest 1 i ma PPID 0. Teoria chaosu współbrzmi z Twoim linuksem ;)


Stronka-dom: http://titek.victorygames.pl
Jabber: nic@jabster.pl
Hobby: kompilowanie Linuksa, Bluetooth
Dystrybucja: żadna, bliski krewny LFS, składak

Offline

 

#7  2009-01-10 23:40:00

  rychu - elektryk dyżurny

rychu
elektryk dyżurny
Skąd: gdańsk/kalmar
Zarejestrowany: 2004-12-28

Re: Jak zlikwidowac (ubić) procesy zombie

może te zombiaki czekają na zakończenie jakiejś operacji i/o? dysk ci się nie sypie? sprawdzałeś system plików?


linux regd. user #248790

Offline

 

#8  2009-01-11 02:18:20

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Re: Jak zlikwidowac (ubić) procesy zombie

Procesy zombie już są ubite!
Zostały po nich tylko struktury zawierające między innymi info o kodzie wyjścia. Usuwane są w momencie gdy proces rodzica wywoła wait() lub pochodną. Więc wysyłanie jakichkolwiek sygnałów do nich mija się z celem gdyż tak naprawdę te procesy już nie istnieją.
http://pl.wikipedia.org/wiki/Proces_zombie

EDIT: Dopóki init nie stanie się rodzicem tych procesów nie może nic zrobić, a stać się może tylko jeżeli zostaną one osierocone przez proces rodzicielski, wtedy init je adoptuje

Offline

 

#9  2009-01-11 08:19:23

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Offline

 

#10  2009-01-11 13:01:37

  mariaczi - Użytkownik

mariaczi
Użytkownik
Zarejestrowany: 2007-10-02

Re: Jak zlikwidowac (ubić) procesy zombie

NIC napisał(-a):

No jak coś z initem jest to lepszy byłby restart... Bo inita może osierocić tylko jądro... Jeśli może...

Z mana:

Processes marked <defunct> are dead processes (so-called "zombies") that remain because their parent has not destroyed them properly.
       These processes will be destroyed by init(8) if the parent process exits.

Więc lepiej mieć tego inita.

Albo spróbuj zagadać do inita... init 2 czy jak kto tam woli.

PS. U Ciebie PPID inita jest równy 1 (init z synem init? masz inne inity?)?? U mnie init jest 1 i ma PPID 0. Teoria chaosu współbrzmi z Twoim linuksem ;)

NIC, wszytsko to już doszukałem nim napisałem o pomoc.

Kod:

~# ps -ef | grep init
root         1     0  0  2008 ?        00:00:06 init [2]
root     32532     1  0 Jan03 ?        00:00:00 [init] <defunct>

Z initem się nie porozmawia... :(

Kod:

init: timeout opening/writing control channel /dev/initctl

@rychu: To o co pytasz w pierwszej kolejnosci posprawdzane, jest w porzadku.
@milyges: Wiem, co i jak sie ma :)
Zainstaniała sytuacja z moich domnieman, choc nie poznalem przyczyny, a szkoda. Stalo sie chyba tak, ze init przejal te procesy (stal sie ich rodzicem) a potem jak to ladnie nazwal NIC teoria chaosu współbrzmiała z tym serwerem i sie uczynił na nim "mismacz". Pozostanie mi chyba nocny reboot maszyny.

Ostatnio edytowany przez mariaczi (2009-01-11 13:03:12)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)