Zombi süreçleri nelerdir?


138

Gibi komutlar topve gui tabanlı System Monitorben şu anda birkaç zombi süreçleri olduğunu görebiliyorum.

Zombi süreçleri nelerdir?

Sistemin performansını veya zombi oldukları uygulamaları etkilerler mi? Çok fazla bellek mi kullanıyorlar yoksa hiç bellek mi kullanıyorlar?


39
Onlar senin cpu yemek isteyen süreçlerdir;)
Luis Alvarado

8
öğle yemeği için ... :)
RolandiXor

3
Bu işlemler öldü ama gömülmedi.
Prateek Joshi,

2
İşlemcimi ye ?! Bu gerçekten dehşet verici!
Håvard Geithus

Yanıtlar:


162

Zombiler DEAD işlemleridir. Onlar 'öldür' olamazlar (DEAD'ı öldüremezsin). Sonunda tüm süreçler ölür ve yaptıklarında zombiler haline gelirler. Neredeyse hiç kaynak tüketmiyorlar, çünkü bunlar ölmek üzere! Zombilerin nedeni zombinin ebeveyni (süreci) zombinin çıkış durumunu ve kaynak kullanım istatistiklerini alabilmesidir. Ebeveyn, işletim sistemine artık wait () sistem çağrılarından birini kullanarak zombiye ihtiyaç duymadığını bildirir.

Bir süreç öldüğü zaman, çocuk süreçlerinin tümü init süreç olan 1 numaralı işlemin çocukları olur. Init “her zaman”, çocukların ölmesini bekler, zombiler olarak kalmazlar.

Zombi işlemleriniz varsa, bu zombilerin ebeveynleri tarafından beklenmediği anlamına gelir (gösterilen PPID'ye bakın ps -l). Üç seçeneğiniz var: Üst süreci düzelt (beklet); ebeveyni öldür; ya da onunla yaşa. Onunla yaşamanın o kadar da zor olmadığını unutmayın, çünkü zombiler ps çıkışında birden fazla fazladan satır tutar.

Unix ps komutunun çıktısında Zombiler STAT sütununda bir "Z" varlığında tanımlanabilir. Kısa bir süre boyunca var olan zombiler, genellikle ana programdaki bir hatayı gösterir. Diğer sızıntılarda olduğu gibi, birkaç zombinin varlığı başlı başına endişe verici değildir, ancak daha ağır yükler altında ciddi şekilde büyüyebilecek bir sorunu gösterebilir.

Bir sistemi zombileri kaldırmak için, SIGCHLD sinyali kill komutunu kullanarak ebeveyne manuel olarak gönderilebilir. Ebeveyn işlemi hala zombiyi biçmeyi reddediyorsa, bir sonraki adım ebeveyn sürecini kaldırmak olacaktır. Bir süreç ebeveynini kaybederse, init yeni ebeveyn olur. Init, init'li zombileri ebeveyn olarak toplamak için bekleme sistemi çağrısını düzenli aralıklarla yürütür.

Vardır yetim işlemler ana süreç bittiğinde veya sonlandırıldı bir bilgisayar bir süreçtir.

Sunucunun isteğini yaptıktan sonra istemci işlemi çöktüğünde, uzaktan başlatma sırasında bir işlem artık kalabilir.

Yetimler sunucu kaynaklarını boşa harcar ve potansiyel olarak bir sunucuyu sıkıntıya sokabilir (Bu, zombiler ve yetimler arasındaki en büyük kaynak farkıdır (Yetim zombi filmi görmemeniz hariç).

  1. İmha en yaygın kullanılan tekniktir; Bu durumda yetim işlemi öldürülür.

  2. Yeniden doğuş, makinelerin periyodik olarak uzak hesapların ebeveynlerini bulmaya çalıştıkları bir tekniktir; bu noktada yetim süreçler öldürülür.

  3. Sona erme, her bir sürecin öldürülmeden önce bitirilmesi için belirli bir süre ayrıldığı bir tekniktir. Bir süreç gerekiyorsa, ayrılan süre sona ermeden önce bitirmek için daha fazla zaman isteyebilirsiniz.

Aynı zamanda, ana işlemiyle aynı makinede çalışan bir işlem artık kullanılabilir. UNIX benzeri bir işletim sisteminde, artık herhangi bir işlem, özel "init" sistem süreci tarafından derhal uygulanacaktır. Bu işleme yeniden ebeveynlik denir ve otomatik olarak gerçekleşir. Her ne kadar teknik olarak süreç ebeveyn olarak "init" işlemine sahip olsa da, başlangıçta onu oluşturan süreç artık varolmadığından bu yana hala bir yetim süreci olarak adlandırılıyor.

Daha fazla bilgi:

http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process#ixzz1PCN9vojU

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

http://www.brighthub.com/computing/linux/articles/79186.aspx

Sistem kullanıcı girişi üzerine yavaşça kilitlendiğinde ve tepki verdiğinde askıda kalma sürecini belirleme ve yok etme?

LAN'daki bir Windows makinesinden bir Ubuntu makinesinde çalışan bir işlemi uzaktan öldürme


18
Ekhm! Ölüleri öldürebilirsin! Sadece kafaya nişan almalısın. Yoksa bize sürekli yalan mı söylediler?
Marcin Kaminski

1
initwaittüm çocuk süreçlerini çağırıyor , zombi, yetim (evlat edinilmiş) ve biyolojik (kendi kendine doğmuş)?
Kanama Parmakları

1
acc. Dünya Savaşı Z kamuflaj kullanın: P
عثمان غني

Lütfen @MarcinKaminski'ye madalya verin!
Andrea,

20

Zombi süreçleri (ayrıca gösteriliyor <defunct>), gerçek süreçler değil. Bunlar sadece çekirdek işlem tablosundaki girdilerdir. Tükettikleri tek kaynak bu. Herhangi bir CPU veya RAM tüketmezler. Zombilere sahip olmanın tek tehlikesi, işlem tablosunda boş alan cat /proc/sys/kernel/threads-maxkalması ( sisteminizde kaç girişe izin verildiğini görmek için kullanabilirsiniz ).

Yalnızca üst süreçleri (yani fork()'edkendilerinin yaşadığı süreç ) canlı olduğunda görünür , ancak henüz wait()sistem işlevini çağırmazlar . Ebeveyn ölür sonra, zombiler wait()'edtarafından initve kaybolur.


4
topİçinde `ekran görüntüsü bu soruya sizi çelişmekte? Orada, zombinin 1 CPU'nun% 100'ünü kullandığı, ancak hafızasının olmadığı görülüyor.
Torben Gundtofte-Bruun

7

Bir zaman child processson bulur, onun ölümü kendi üst iletilir ebeveyn bazı önlemleri alabiliriz ki.

Bir processki onun dönüş kodu kabul etmeye ebeveyn bekliyor bir denir zombi süreci .

Onlar var completed their executionama hala bir sahiptir entryiçinde process table.


1

Zombie işlemleri, çalışmayı durdurdu, ancak ana işlem bekleme çağrısı yoluyla almadığı için işlem tablosu girişi hala var. Teknik olarak sonlanan her süreç, çok kısa bir süre için bir zombidir, ancak daha uzun süre yaşayabilirler.

Daha uzun ömürlü zombi işlemleri, ana işlemler, alt işlem bittikten sonra bekleme sistemini çağırmazsa gerçekleşir. Bunun gerçekleştiği durumlardan biri ebeveyn işleminin kötü yazılmış olması ve bekletme çağrısını atlatması veya ebeveyn işleminin çocuktan önce ölmesi ve yeni ebeveyn işleminin beklememesi durumunda olmasıdır. Bir sürecin ebeveyni çocuktan önce öldüğünde, ÇS, çocuk sürecini "init" sürecine veya PID 1'e atar. Örneğin, init süreci, çocuk sürecini "benimser" ve onun ebeveyni olur. Bu, şimdi çocuk işlemi çıktığında yeni ebeveynin (init) çıkış kodunu almak için wait çağırması gerektiği veya işlem tablosu girişi sonsuza kadar kaldığı ve bir zombi olduğu anlamına gelir.

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.