Linux'ta zombi işlemlerini nasıl öldürebilirim

Nov 25, 2025
, Linux
Fatmawati Achmad Zaenuri / Shutterstock

kötü yazılmış ya da kötü performans bırakabilir Programlar zombi süreçleri Linux bilgisayarın içindeki gizlenen. zombiler nasıl oluşturulduğunu öğrenin ve nihayet onları dinlenmeye alabilirim nasıl.

Linux üzerinde Devletler Work işleyin nasıl

Linux, tabii ki, tüm uygulamalar ve bilgisayarınızda çalışan cinleri takip etmek için vardır. Bu işi yapan yollarından biri süreci tablosunu koruyarak gereğidir. Bu çekirdek bellekte yapıların listesidir. Her süreç bu konuda bazı bilgiler içermektedir Bu listedeki bir giriş içerir.

süreç tablo yapılarının her birinde büyük bir anlaşma değil. Onlar tutun işlem kimliği , Birkaç veri öğeleri, ve bu işlem için işlem kontrol bloğu (PCB) için bir işaretçi.

Linux aramak veya her işlem için ayarlaması gerekir birçok ayrıntı tutan PCB bu. PCB bir süreç oluşturulur olarak da işlem süresi göz önüne alındığında, güncellenmiş ve son olarak yok edilir.

Linux PCB üzerinde 95 alanları içerir. Bu tanımladı adı verilen bir yapı olarak task_struct.h Ve bitti 700 hatları uzun. PCB aşağıdaki bilgi türlerini içerir:

  • Süreç Devlet : Durumları aşağıda açıklanmaktadır.
  • Süreç Numarası : İşletim sistemi içinde Eşsiz tanımlayıcı.
  • Program sayıcı Bu süreç bir sonraki CPU erişimi verilir, sistem yürütülmesi gereken işleminin bir sonraki yönerge bulmak için bu adresi kullanacak.
  • Defterleri Bu işlem tarafından kullanılan işlemci kayıt listesi. Liste akümülatörler, indeks kayıtları ve yığın işaretçiler içerebilir.
  • Dosya Aç Listesi : Dosyalar bu süreçte ilişkili.
  • İşlemci Planlama Bilgi : Ne sıklıkta belirlemek için kullanılır, ve ne kadar süreyle, CPU işlem süresi bu sürece verilir. sürecin öncelik, zamanlama kuyruklar ve diğer zamanlama parametrelerine işaretçileri PCB kaydedilmesi gerekir.
  • Bellek Yönetim Bilgi : Detaylar Böyle bellek sayfalara başlangıç ​​ve bitiş süreci bellek adresleri ve işaretçiler olarak bu süreç kullandığı bellek, yaklaşık.
  • G / Ç Durum Bilgisi : İşlem tarafından kullanılan herhangi bir giriş veya çıkış cihazları.

“Süreç Devlet” aşağıdakilerden herhangi biri olabilir:

  • R: Çalışan bir ya da çalıştırılabilir proses. Koşu o CPU döngülerini alınması ve yürütülmesi ediyor anlamına gelir. Runnable süreç işlemci yuvası için kaçak ve bekleme hazırdır.
  • S: Uyuyan süreci. bu usul, içi veya çıkış işlemi gibi tam olan bir aksiyon bekliyor ya da bir kaynak için kullanılabilir hale gelmesi.
  • NS: süreç kesintisiz uyku durumundadır. Bu bir engelleme sistemi çağrısı kullanıyor ve sistem çağrıları tamamlayana kadar devam edemez. “Uyku” durumuna aksine, bu durumda bir süreç sistem çağrısı sinyallerine değil cevap tamamlanır edecek kadar ve yürütme sürecine geri döndü.
  • T: aldığı için işlem sonlandırıldı (durduruldu) SIGSTOP sinyal. Bilişim Teknoloji Sadece cevap verecektir için Sigkill veya SIGCONT ya öldürme işlemi ya da sırasıyla, devam etmek için talimat sinyallerini içine alır. Bu gelen takas zaman neler olduğunu ön plan ( fg ) ile arka fon ( bg) görevler.
  • Z: Bir Zombi proses. Ne zaman bir süreçtir tamamlamalar, sadece ortadan yok. O kullanıyor herhangi belleği boşaltır ve bellekten kendini kaldırır, ancak sürecin masa ve PCB bunun girişini kalır. Onun devlet olarak ayarlanır EXIT_ZOMBIE Ve üst işlem, (bildirilir Sigchld Alt süreç tamamlandığını sinyali).

Zombi halde, ana süreç biri aramaları Bekle() fonksiyonların aileleri Çocuk süreci yaratıldığında. Sonra çocuk sürecinde bir devlet değişikliğini bekler. Çocuk süreci durduruldu, devam etti mi, ya da bir sinyalle öldürüldü mü? Kodunun doğal tamamlanmasından geçerek sonlandırıldı mı?

Durum değişikliği, çocuk işleminin çalışmayı durdurduğu anlamına gelirse, çıkış kodu okunur. Ardından, çocuğun PCB'si yok edilir ve işlem tablosundaki girişi kaldırılır. İdeal olarak, bu her şey göz açıp kapayıncaya kadar olur ve zombi devletindeki süreçler çok uzun süredir yoktur.

İLGİLİ: Linux üzerinde arka plan işlemleri nasıl çalıştırılır ve kontrol edilir

Linux'ta zombi işlemlerine neden olan nedir?

Kötü bir yazılı ebeveyn süreci arayamayabilir Bekle() Çocuk İşlemi Oluşturulduğunda İşlev. Bu, çocuk sürecindeki devlet değişiklikleri için hiçbir şeyin izlenmeyeceği anlamına gelir ve Sigchld sinyal göz ardı edilecektir. Veya, belki de başka bir uygulama, programlama veya kötü amaçlı niyet nedeniyle, ana işlemin yürütülmesini etkiliyor.

Ancak, ebeveyn işlemi, çocuk sürecinde durum değişikliklerini izlemiyorsa, uygun sistem temizliği gerçekleşmez. PCB ve işlem tablosundaki giriş, çocuk işleme sonlandırıldığında kaldırılamaz. Bu, zombi durumunun asla PCB'den çıkarılmaması sonucudur.

Zombiler biraz hafıza kullanır, ancak genellikle bir problemi oluşturmazlar. Proses tablosundaki giriş küçüktür, ancak serbest bırakılıncaya kadar, işlem kimliği tekrar kullanılamaz. 64 bitlik bir işletim sisteminde, PCB işlem tablosu girişinden çok daha büyük olduğu için herhangi bir soruna neden olmuyor.

Çok sayıda zombi, akındırılabilir, başka işlemler için ücretsiz olan bellek miktarını etkiler. Bu birçok zombiyi aldıysanız, olsa da, ana uygulama veya işletim sistemi hatasıyla ciddi bir probleminiz var.

Zombi işlemlerini nasıl kaldırılır

Zombi işlemini öldüremezsin çünkü zaten öldü. Herhangi bir sinyal vermeyecek çünkü hafızadan kaldırıldı - gönderecek hiçbir yerde yok Sigkill sinyal. Göndermeyi deneyebilirsin Sigchld Ana işlemin sinyalini, ancak çocuk işleme sonlandırıldığında işe yaramazsa, şimdi çalışması pek mümkün değildir.

Tek güvenilir çözüm, ana işlemi öldürmektir. Sonlandırıldığında, çocuk süreçleri tarafından devralınır. içinde Bir Linux sisteminde çalışacak ilk işlem olan işlem (işlem kimliği 1'dir).

NS içinde İşlem düzenli olarak gerekli zombilerin temizlenmesini gerçekleştirir, bu yüzden onları öldürmek için, onları yaratan süreci öldürmek zorundasınız. NS Tepe Komut, zombileriniz olup olmadığını görmek için uygun bir yoldur.

Aşağıdakileri yazın:

  Üst  

Bu sistemin sekiz zombi işlemi var. Biz bunları listeleyebilir kullanarak ps emretmek ve içine borcu egrap . Yine, zombi işlemleri "Z," bir devlet bayrağına sahiptir ve genellikle "feshedilmiş" de göreceksiniz.

Aşağıdakileri yazın:

 PS AUX | EGREP "Z | Defunct" 

Zombi işlemleri listelenmiştir.

Bu, zombilerin süreç kimliklerini keşfetmenin, ileri geri gitmek yerine Tepe . Ayrıca "Badprg" adında bir başvurunun bu zombileri yönettiğini görüyoruz.

İlk zombi proses kimliği 7641, ancak ana işleminin işlem kimliğini bulmamız gerekiyor. Bunu kullanarak yapabiliriz ps Yeniden. Çıktı seçeneğini kullanacağız ( ) söylemek ps Sadece ebeveynin işlem kimliğini görüntülemek için ve sonra ppid = bayrak.

Bulmak istediğimiz süreç kullanılarak gösterilecektir. -P (İşlem) seçeneği ve ardından Zombie'nin işlem kimliğinde geçer.

Bu nedenle, süreci 7641 süreç bilgilerini aramak için aşağıdaki komutu yazıyoruz, ancak yalnızca ana işlemin kimliğini bildirecektir:

 PS -O PPID = -P 7641 

Ana işlem kimliğinin 7636 olduğunu söylemişti. Artık bunu kullanarak bu referans verebiliriz. ps bir kez daha.

Bunun, ebeveynlik sürecinin adıyla eşleştiğini görüyoruz. Ana işlemi öldürmek için, SIGKILL seçeneğini Öldür komutuyla aşağıdaki gibi kullanın:

 Öldür -Sigkill 7636 

Ana sürecin sahibine bağlı olarak, kullanmanız gerekebilir. Sudo .

Zombiler korkutucu değil ...

... büyük bir horde içinde olmadıkça. Birkaç kişi endişelenecek hiçbir şey değil ve basit bir yeniden başlatma onları silecek.

Ancak, bir uygulamanın veya işlemin her zaman zombileri yumurtlamasını fark ederseniz, bu bakmanız gereken bir şeydir. Büyük olasılıkla sadece özenli bir yazılı program, bu durumda, belki de çocuk süreçlerinden sonra doğru bir şekilde temizleyen güncellenmiş bir sürüm var.


, Linux - En Popüler Makaleler

Nasıl Kullanım Brace Genişleme Linux'un Bash Kabuğu'nda

, Linux May 12, 2025

Fetmawati Achmad Zaenuri / Shutterstock Brace Genişleme, komut dosyaları ve takma adlarda ve Linux komut satırında kullanılabilecek dizelerin listelerini ..


Nasıl Kullanım Şifreli Parolalar Bash Script

, Linux Jun 30, 2025

Fetmawati Achmad Zaenuri / Shutterstock.com Parola korumalı bir kaynağa bağlanmak için bir Linux komut dosyası kullanmak zorunda kalırsanız, muhtemelen ..


Debian 11 "Bullseye" nı yeni olanlar

, Linux Jul 22, 2025

Debian , diğer birçok Linux dağılımının progenitörü, testi aşamasında 11 yayın yapmıştır. Yükseltme erdemlerini tartıyor musunuz yoksa sadece değişiklikleri m..


İlköğretim OS 6 "ODIN" n'teki yenilikler

, Linux Aug 14, 2025

Elementary, Inc. Var Birçok Linux dağıtımları insanlar iddia (dağıtımlar) Windows veya MacOS yerini olumlu şekilde. Ama başka, bu açık bir amacı..


Linux'ta Android uygulamaları nasıl çalıştırılır

, Linux Oct 19, 2025

Sessizbitler / Shutterstock.com Hiç Linux'ta bir Android uygulaması çalıştırmak istedim ancak hata ayıklama köprüler, geliştirme ortamları veya Side..


Linux'taki Sudoers dosyasına bir kullanıcı nasıl eklenir

, Linux Oct 30, 2025

Eğer bir sudo Linux'taki komut size bir kullanıcının “sudoers dosyasında olmadığını”, “sudoers” listesine girmeniz gerektiğine dair bir mesaj getirir. Ubuntu ve di�..


Linux'ta dosya adlarındaki boşluklarla nasıl başa çıkılır

, Linux Dec 14, 2025

Çoğu işletim sistemi gibi, Linux da içindeki boşlukları olan dosya adlarını destekler. Ancak bu dosya adlarını komut satırında kullanmak her zaman basit değildir. İşte boşluklar..


Linux'ta ortam değişkenleri nasıl listelenir

, Linux Oct 31, 2025

Linux'ta ortam değişkenleri önemli değerlere ve ayarlara sahiptir. Komut dosyaları, uygulamalar ve kabuklar, genellikle kendilerini yapılandırmak veya davranışlarını kontrol etmek i�..


Kategoriler