Sistemimdeki zombi sürecini öldürmeli miyim?


20

Linux / Unix sistemlerinde acemi olduğum ve zombi süreçlerini okuduğum için bir sorum var. Şu anda 10 tane var. Onları öldürmem gerekiyor mu? Evet ise neden? Bunlar benim sistemimde bir yük mü?

592 processes: 581 sleeping, 1 running, 10 zombie, 0 stopped

25
Onları öldürmeye gerek yok. Onlar zaten öldüler.
Marco

2
Yani artık sistemimi yüklemiyorlar. Ve sistemi yeniden başlatana veya öldürene kadar böyle kalacaklar, değil mi?
Jason Paddle

7
@Marco: Zaten ölü olanı öldüremezsin. Ama ebeveynlerini öldürebilirsin, harrharr!
wullxz

7
Sorun, ebeveynlerinin onları biçmemeleri (öldüklerinde).
ypercubeᵀᴹ

3
10 zombi ??? Musallat oldun! Koş Jason koş.
Luc M

Yanıtlar:


29

Bir zombiyi öldüremezsin, zaten öldü.

Bu sürecin kaynakları ücretsizdir ve diğer süreçler tarafından kullanılabilir. Geriye kalan, işlem tablosundaki bir girdidir. Bunun performans üzerinde bir etkisi yoktur, endişelenmeyin.


Evet, bu mantıklı. Ebeveyn sürecini öldürebilirim. Bilgi için teşekkürler. Sadece sistem yükleyip yüklemediklerini bilmek istedim.
Jason Paddle

Yine de bir zombi sınırı olduğuna inanıyorum. Bence onun 1024, bu yüzden performans zarar vermez ama sanırım sahip olabileceğiniz sayı üzerinde bir tavan var.
ProfessionalAmateur

@ProfessionalAmateur Zombi sınırına ulaşırsanız ne olur (1024 veya her neyse)?
Dondurulmuş Bezelye Roddy

@RoddyoftheFrozenPeas - Dürüst olmak gerekirse emin değilim, o noktaya gelmeden önce onları her zaman temizledim. Sistemin başka bir zombi yaratmaya çalışacağını ve belki de bir bellek ihlali veya başka bir zor hata, taşma veya segmentasyon hatası olduğunu hayal ediyorum.
ProfessionalAmateur

2
@ProfessionalAmateur: Linux'ta zombi sınırı yok . Zombi PID'leri, /proc/sys/kernel/pid_maxdiğer tüm PID'ler gibi, tabidir .
testere

16

PS'de görünen bu zombi süreçleri nelerdir? Onları öldürüyorum ama gitmiyorlar!

Zombiler ölü süreçlerdir. Ölüleri öldüremezsin. Tüm süreçler sonunda ölür ve yaptıklarında zombiler haline gelirler. Neredeyse hiç kaynak tüketmiyorlar, çünkü bunlar öldü! Zombilerin nedeni, zombi ebeveyninin (işleminin) zombi çıkış durumunu ve kaynak kullanım istatistiklerini alabilmesidir. Üst öğe, wait () sistem çağrılarından birini kullanarak işletim sistemine artık zombi gerektirmediğini bildirir.

Bir süreç öldüğünde, alt süreçlerinin tümü, başlatma işlemi olan 1 numaralı sürecin çocukları olur. Init her zaman çocukların ölmesini bekliyor, böylece zombi olarak kalmıyorlar.

Zombi süreçleriniz varsa, bu zombilerin ebeveynleri tarafından beklenmediği anlamına gelir (ps -l tarafından görüntülenen PPID'ye bakın). Üç seçeneğiniz vardır: Üst işlemi düzeltin (bekletin); ebeveynleri öldürmek; ya da onunla yaşa. Onunla yaşamanın o kadar zor olmadığını unutmayın, çünkü zombiler ps çıkışında birden fazla satır alır.

Kaynak: http://www.linuxsa.org.au/tips/zombies.html

Ve bir öldürme çılgınlığı yaşıyorsanız, bu süper kullanıcı iş parçacığı sizin için ilginç olabilir: Bir zombi sürecinin ana sürecini nasıl buluyorsunuz?


Ebeveyni düzeltmenin aşırıya kaçmış olabileceğini unutmayın - belki de henüz çocuklarını beklemek için bir noktaya gelmedi. Belki daha sonra yapar (ya da evet, belki de yapmaz).
Romain

Evet haklısın. Bağladığım sorunun cevabı size ana sürecin nasıl belirleneceğini anlatıyor. Böylece, her zaman hangi işlemlerin zombi oluşturduğunu kontrol etme ve çalışmaya devam etmesinin gerekli olup olmadığına karar verme şansınız vardır.
wullxz

7

Onları öldürmene gerek yok.

Bazı temel anlayışlar oluşturmak için:

Her süreç bir ana sürecin çocuğudur (init süreci hariç, ancak bunun için endişelenmemize gerek yoktur).

Bir alt işlem yürütmeyi tamamladığında, yine de üst işlemin erişmek istediği verileri, genellikle alt işlemin sonucunu açıklayan bir çıkış kodunu içerebilir (Başarılı oldu mu? Hata mı oldu? Hata kodu neydi?).

Tamamlanmış bir alt süreç, üst süreç "reaps" ya da alt süreçte beklemeden bir zombi süreci olarak işlem tablosunda asılı kalır; bu, yalnızca üst süreç, işletim sistemine artık bu alt işleme ihtiyaç duymadığını bildirir; İstediği dönüş değerlerini okudu ve onunla yapıldı. Bu noktada, sistem işlem tablosundaki girişi temizleyecektir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.