Zombi süreçleri nelerdir?

127

top ve gui tabanlı System Monitor gibi komutlarla, şu anda birkaç zombi işleminin olduğunu görebiliyorum.

Zombi süreçleri nelerdir?

Sistemin performansını veya zombi oldukları uygulamayı etkilerler. Çok fazla bellek veya herhangi bir bellek kullanıyorlar mı?

    
sordu Jesper 14.06.2011 00:27

3 cevap

151

Zombiler DEAD süreçleridir. Onlar öldüremezler (ÖLÜYEN öldüremezsiniz). Tüm süreçler sonunda ölür, ve onlar ne zaman zombiler olurlar. Neredeyse hiçbir kaynak tüketmiyorlar, ki bu da ölmeleri için beklenecek bir kaynak! Zombilerin nedeni, zombinin ana (süreci) zombi çıkış durumu ve kaynak kullanım istatistiklerini alabilir. Ebeveyn, işletim sistemini, zomiye ihtiyaç duymadığı için wait () sistem çağrılarından birini kullanarak bildirir.

Bir süreç öldüğünde, onun çocuğu, hepsi işlemin 1 numaralı sürecinin çocukları haline gelir. Init '' her zaman '' çocukların ölmesini bekler, böylece zombiler olarak kalmazlar.

Zombi işlemleriniz varsa, bu zombiler ebeveynleri tarafından beklemedikleri anlamına gelir ( ps -l tarafından görüntülenen PPID'ye bakın). Üç seçeneğiniz var: Ana işlemi düzeltin (bekleyin); ebeveyn öldürmek; ya da onunla yaşa. Onunla yaşamak o kadar da zor değil çünkü zombiler ps'nin çıkışında bir satırdan daha fazla fazla yer kaplıyorlar.

Zombiler, Unix ps komutundan çıkışta STAT sütununda bir "Z" varlığı ile tanımlanabilir. Kısa bir süreden daha uzun süredir var olan zombiler, genellikle ana programdaki bir hatayı gösterir. Diğer sızıntılarda olduğu gibi, birkaç zombinin varlığı kendi başına endişe verici değildir, ancak daha ağır yükler altında ciddi şekilde büyüyecek bir sorunu işaret edebilir.

Zombileri bir sistemden kaldırmak için, SIGCHLD sinyali, kill komutunu kullanarak ana bilgisayara el ile gönderilebilir. Ana işlem hala zombiyi almayı reddederse, sonraki adım ana işlemi kaldırmak olacaktır. Bir süreç ebeveynini kaybettiğinde, init yeni ebeveyni olur. Init, periyodik olarak, herhangi bir zombi, ebeveyn olarak init ile toplamak için bekleme sistemi çağrısını yürütür.

Ayrıca, üst işlemi bitmiş veya sonlandırılmış bir bilgisayar işlemi olan yetim işlemleri de vardır.

İstemci işleminin sunucunun bir isteğini yaptıktan sonra çökmesi durumunda, bir işlem uzaktan çalıştırma sırasında öksüzleşebilir.

Yetimler, sunucu kaynaklarını boşa harcar ve potansiyel olarak bir sunucuyu belada bırakabilir (Bu, zombi ve yetimler arasındaki en büyük kaynak farkıdır (bazı yetim zombi filmi görürseniz hariç). Ancak, yetim işlemi sorununa çeşitli çözümler vardır:

  1. İmha, en yaygın kullanılan tekniktir; bu durumda yetim süreci öldürüldü.

  2. Reenkarnasyon, makinelerin periyodik olarak herhangi bir uzak hesaplamanın ebeveynlerini bulmaya çalıştığı bir tekniktir; bu noktada yetim süreçler öldürüldü.

  3. Sona erme, her işlemin öldürülmeden önce tamamlanması için belirli bir süre ayrıldığı bir tekniktir. Bir işlem gerekirse, ayrılan süre dolmadan önce bitirmek için daha fazla süre "sor" olabilir.

Bir işlem aynı zamanda ana işlemle aynı makinede çalıştırılıyor olabilir. UNIX benzeri bir işletim sisteminde, herhangi bir öksüz işlem, özel "init" sistem işlemi tarafından hemen benimsenecektir. Bu işleme yeniden ebeveynlik denir ve otomatik olarak gerçekleşir. Her ne kadar teknik olarak süreç, ebeveyn olarak “init” sürecine sahip olsa da, orijinal olarak yaratılan süreç artık mevcut olmadığından, hala bir yetim süreci olarak adlandırılmaktadır.

Daha Fazla Bilgi:

İşte

İşte

İşte

Nasıl tanımlanır? sistem askıda kaldığında ve kullanıcı girdisinde yavaşça tepki verdiğinde askıya alma işlemini durdurun .

Öldürme LAN'da bulunan bir windows makinesinden uzaktan bir Ubuntu makinesinde çalışan bir işlem

    
verilen cevap Luis Alvarado 14.06.2011 00:39
20

Zombi işlemleri (ayrıca <defunct> olarak gösterilir), gerçek süreçler değildir. Çekirdek işlem tablosunda sadece girdilerdir. Bu, tükettikleri tek kaynaktır. CPU veya RAM tüketmezler. Zombilere sahip olmanın tek tehlikesi, işlem tablosunda yer dışında kalıyor (sisteminizde kaç girişe izin verildiğini görmek için cat /proc/sys/kernel/threads-max kullanabilirsiniz).

Sadece ebeveyn işlemleri (yani fork()'ed onları içeren süreç) yaşıyorsa, ancak henüz wait() sistem işlevini çağırmadıysa görünürler. Ebeveyn ölünce, zombiler wait()'ed için init ve kaybolur.

    
verilen cevap vartec 14.06.2011 11:36
6

child process değeri sona erdiğinde, ebeveyne uygun eylemde bulunabilmesi için ölümü ebeveynine iletilir.

Ebeveyninin dönüş kodunu kabul etmesini beklemek olan process zombi işlemi olarak adlandırılır.

completed their execution 'si var, ancak entry ' si hala% co_de değerine sahip.

    
verilen cevap Prateek Joshi 14.10.2015 18:11

Etiketlerdeki diğer soruları oku