Bir girişi okumak ela Bir forumda birinin sistemi yavaş olduğundan yardım istediğini, bazı çözümlerin süreçlere odaklandığını hatırladım.
Linux'taki işlemlerin ana durumları şunlardır:
Uyku (S) : Yürütme sırasını bekleyen işlemler.
Koşu (R) : Çalışmakta olan işlemler.
Bekleniyor (D) : Bir Giriş / Çıkış işleminin tamamlanmasını bekleyen işlemler.
Zombi (Z) : Bitmiş ancak işlem tablosunda görünmeye devam eden işlemler. Programlama hatalarından kaynaklanabilirler ve yavaş veya soruna neden olan bir sistemin belirtisi olabilirler.
Bir Zombi süreci, onu yaratan üst süreçten hiçbir zaman sinyal almayan bir süreçtir, bir alt süreç, sinyalleri oluşturulan alt süreçlere göndermekten sorumlu olan üst süreç olarak bilinen daha yüksek seviyeli bir süreçte kökenine sahip olandır. yaşam sürelerinin sona erdiğini belirtmek için.
Programlama hatalarından kaynaklanabilirler ve yavaş veya soruna neden olan bir sistemin belirtisi olabilirler. Bu durum genellikle, bazı konfigürasyonların geliştirici tarafından tasarlanmaması nedeniyle ortaya çıkar.
Wikipedia'da şunları yapabilirsiniz: daha fazla oku bu süreçler hakkında.
En üstteki komutu yürüttüğümüzde, sistemde yürütülen işlemleri gerçek zamanlı olarak görebiliriz ve bu, zombi durumunda olup olmadığını gösterecektir, ancak hangisinin olduğunu göstermez.
Tüm işlemleri görmek için terminali yazın: ps yardımcıve sadece zombileri görmek için: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'
alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'
Z 1945
İşlemleri listelerken Z statüsünde görünüyorsa, bunun bir zombi olduğu anlamına gelir, bu da uygulamanın iyi çözülmediği veya hatalara sahip olduğu anlamına gelir, PID'sinin, benzer bir komut çalıştırılarak ortadan kaldırılabileceğini bilerek, terminalde, bu örnekte:
alf @ Alf ~ $ öldür -9 1945
Çok sayıda zombi işleminiz olduğunda veya en azından birden fazla zombi işleminiz olduğunda, onları öldüren aşağıdaki komutu kullanabilirsiniz, sadece bunun için çalışır, zombi işlemleri olmadan çalıştırırsanız hiçbir şey olmaz:
alf @ Alf ~ $ sudo öldürme -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{baskı $ 2}' ''
selamlar
🙁
Teşekkürler çok iyi katkı, periyodik kontroller yapmak için komutları kaydedeceğim.
Teşekkürler, güzel makale.
Makalenizle ilgili birkaç açıklama:
"Zombi süreci" terimi teknik olarak uygunsuzdur ve GNU / Linux ile az deneyime sahip olanlarımız, kendi içinde çalışan bir süreç olmadığı için onu kullanmaktan kaçınmalıdır, ancak bu yalnızca artık mevcut olmayan bir sürece atıftır. sistem ve kimliğini serbest bırakmadı.
Bir "zombi süreci" aslında işlem tanımlayıcısının (işlem tanımlayıcısı) eşleme tablosundaki giriştir, bu nedenle, sistemin işlem tablosunu takip etmek için kullandığı birkaç bayt belleğin ötesinde kaynakları tüketmez.
Hayalet (veya zombi) kayıt tanımlayıcılarında olabilecek tek sorun, çok hızlı ortaya çıktıklarında, teorik olarak tüm işlem tanımlayıcı ayırma tablosunu işgal edip sistemi yeni kayıtlar için yer bırakmadan kaplayabilmeleridir, bu nedenle yeni programları çalıştırmak potansiyel olarak imkansız olacaktır. - işlemlerini kaydeden - sonunda makineyi asan.
Bununla birlikte, 32-bit sistemlerde süreçleri kaydetmek için 32767 alan (nadiren veya hiç kullanılmamış) ve 64-bit sistemdekinin iki katı olduğundan bu neredeyse imkansızdır.
Ölü süreçler kötü bir şekilde kaldırılmış bir sistem çökmesini yapmanın tek yolu, süreç tanımlayıcısını doğru bir şekilde temizlemeden (yani, "zombi süreçleri" oluşturmadan) süreçleri oluşturmak ve onları hızlı bir şekilde öldürmektir, ancak birileri asmak isterse bununla yüzleşelim. sistem bundan çok daha doğrudan yollar var. sistemi tıkayan ve asan üstel bir şekilde yeni süreçler oluşturmaya başlamak; çatallı bomba ile bunu başarmanın yollarından biri:
: () {: |: &};:
/Etc/security/limits.conf dosyasını doğru bir şekilde yapılandırarak sistemi bir çatal bombasına nispeten dirençli hale getirebilirsiniz, ancak yeni süreç oluşturma olasılığını ne kadar sınırlarsak, daha az uygulama çalıştırabileceğimizi hesaba katmak gerekir. sistemimizde aynı anda .. Ancak, sistemleri üzerinde çok iyi bir kontrole sahip olmak isteyen tüm paranoyak sistem yöneticileri için geçerli bir araçtır!
Bu makale geçersiz işlem tanımlayıcıları hakkında iyi bilgiler içermektedir:
http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
Ve bunda çatal bombasının nasıl çalıştığına dair net bir açıklama var: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work
Salu2
msx: «" Zombi süreci "terimi teknik olarak uygunsuzdur ve GNU / Linux konusunda biraz tecrübesi olanlarımız onu kullanmaktan kaçınmalı…» Ha ha ha. Sadece gururundan daha büyük bir şey var: kötü zevkiniz. Hey, yaptığın şey kötü bir tada sahip, eğer ders vermek, fakülteden bir tane almak veya kendi bloğunu açmak ve istediğini yazmak istiyorsan, ama buraya gelip daireyi iyiye çevirmek için Alf gerçekten kötü bir tada sahip .
Gerçek bana oldukça ilginç bir yorum gibi geldi. Gönderiden çok daha fazlası
teşekkür ederim çok ilginç.
mükemmel makale teşekkürler
msx
«" Zombi süreci "terimi teknik olarak uygunsuzdur ve GNU / Linux konusunda az deneyime sahip olanlarımız onu kullanmaktan kaçınmalıdır»
Geliştiricilere bildirmemiz gerekecek çünkü göreceğiniz gibi zombi terimi de kullanılıyor, orada konsolda okudum.
selamlar
Tebrikler, çok güzel makale, onların PZ olduğuna dair her zaman şüphelerim vardı ama araştırmaya hiç zamanım olmadı, şimdi sayfaya gidiyorum ve cevaba rastladım, teşekkür ederim …….
Kontrol + kaçış sistemi ile KDE'de faaliyetler dışarı çıkıyor ve bu zombileri hızlıca öldürebiliyoruz.
Düzeltme, bu bir ZOMBIE, bir ZOMBIE süreci değil
Zombie ingilizcedir
İspanyolca Zombi
Lüks, teşekkürler!.
İlk olarak, zombi süreci terimi tamamen doğru görünüyor. Ayrıca terim en az önemli olanıdır.
Mesele şu ki, msx'in gösterdiği gibi ve aynı wikipedia (makaleyi okudum) zombi süreci gerçekten öldü.
«Bir işlem bittiğinde, tüm belleği ve ilişkili kaynakları, diğer işlemler tarafından kullanılabilmeleri için başvurudan çıkarılır. Her neyse, işlem tablosundaki işlem girişi hala kalır »
Yani, süreç artık sistem kaynaklarını kullanmıyor, bu nedenle sistem üzerindeki yük, msx tarafından açıklandığı gibi minimumdur.
Bununla birlikte, sahip olduğu tek şey, işlem tablosundaki geçersiz bir giriştir ... ki, bunlardan binlercesi varsa, belki bir yük olur (sonuçta, işlemci işlem tablosunu okumalıdır ve bir kötü programlama uygulamalarını yansıtmanın yanı sıra (birisi kötü yapılmış uygulamalar yapıyor).
Ancak kendi içinde gönderinin açıklaması o kadar doğru değildir ve doğru olanı msx tarafından verilen olacaktır.