it-swarm-tr.com

Zombi süreci nedir ve nasıl öldürürüm?

Sanal Av Tüfeği mi?

38
jldugger

Aman Tanrım! Hayır hayır hayır. Kill -9 kullanmayın.

Sürece temiz bir şekilde bir şans vermez:

  1. soket bağlantılarını kapat

  2. geçici dosyaları temizle

  3. çocuklarını gideceğini bildir

  4. terminal özelliklerini sıfırlar vb.

Genel olarak, 15 gönderin ve bir iki saniye bekleyin ve bu işe yaramazsa, 2 gönderin ve işe yaramazsa 1 gönderin. Bu işe yaramazsa, program kötü davrandığından İKİLİ'Yİ ÇIKARIN!

Kill -9 kullanmayın. Sadece saksıyı toplamak için biçerdöver çıkarmayın.

17
Severe_admin

Zombi süreci (aslında şimdi <defunct> Olarak adlandırılıyorlar) gerçekten bir süreç değil. Bu işlem tablosuna yalnızca girdi, bu nedenle üst işlem wait() syscall yapabilir.

Onlar için endişelenmemelisin. Herhangi bir kaynağı işgal etmezler, ebeveynleri wait() çağrısı yapıldığında ebeveynin kendisi öldüğünde yok olurlar.

20
vartec

Ancak, zaten kabul edilmiş bir cevap var: zombi sürecini öldürebilirsiniz. Hata ayıklayıcı ile üst işleme ekleyin ve waitpid işlevini çağırın. Örneğin: - ebeveynin PID = 100 olduğunu, zombi işleminin PID = 200 olduğunu varsayalım

$ gdb -p 100
(gdb) call waitpid(200, 0, 0)
(gdb) quit
11
ondra

Tamamen yeniden yerleştirilmiş ancak süreç tablosunda hala var olan bir işlemdir. Bunu bir Yetim işlemiyle karşılaştırın, ebeveyni öldü ama hala idam ediyor.

İştebazılarıtavsiye onlardan kurtulma.

10
nedm

Bir zombi sürecinin, süreç ağacındaki giriş dışında herhangi bir kaynağı yoktur. Bu, bir işlem tamamlandığında gerçekleşir, ancak üst süreç henüz reaped o (yani, wait üzerinde düzenleme yapmamıştır).

İsterseniz bir SIGCHLD göndererek ebeveyninizi bunu yapmaya zorlayabilirsiniz (kill -20), ebeveyne, ancak ebeveyni onurlandıracağının garantisi yoktur.

Onları genellikle kısa süreler boyunca görürsünüz (örneğin, işlem ağacını üstten kullanarak görüntülerken) - bu normaldir; Bir çocuk işleminin tamamlandığı zaman dilimi ile ana anketler arasındaki zaman diliminde, alt süreç bir zombi olarak görünecektir.

Ancak, normal olmayan zombi süreçlerini görüyorsanız - ki bu normal değildir - yine de endişelenmenize gerek yoktur - yine ölü bir sürece tahsis edilmiş kaynak olmadığından - genellikle uygulamanın boktan geliştiriciler tarafından kötü yazılmış olduğu anlamına gelir.

Zombi süreçlerinden endişelenmeniz gereken tek zaman, örneğin yukarıda belirtilen aynı boktan uygulama yük altında yer alıyorsa, çok sayıda ve çok sayıda gördüğünüz zamandır.

Çalıştığım bir sürü boktan geliştiricimiz var ve bu yüzden bu tür sorunlarla uğraşma ve bunu yaparken her türlü işe yaramaz şeyi öğrenme ayrıcalığına sahibim. Aslında - ekibim röportajlarda berbat geliştiriciler tarafından yazılan berbat Shell betiklerini kullanmak için başvurur - eğer aday betiğin gerçekten crapy olduğunu seçebilir ve bize neden berbat olduğunu söyleyebilir, kapıda iyi bir ayağı var.

8
Xerxes

Sanal av tüfeğine gelince ...

 $ shoot <pid> 
 #!/bin/sh 
 kurban = `ps -e -o pid, ppid | egrep "^\s * $ 1\b" | awk '{print $ 2}' '
 kurban\_name = `ps -e -o pid, cmd | egrep "^\s * $ {kurban}\b" | kafa -n 1 | awk '{print $ 2}' `
 # kill $ {kurban} 
 echo" Öldürdü $ {kurban_adı}. "

Ve unutmayın: her zaman onları kafadan vurun.

0
drybjed