Linux'ta Zombi Süreçler: Bul, Kaldır, Önle
15 dakikalık okuma - 19 Mayıs 2026

Linux'ta zombi süreçleri nasıl tanımlayacağınızı, kaldıracağınızı ve önleyeceğinizi öğrenin. Sunucu yöneticileri için komutlar, kod düzeltmeleri ve izleme ipuçları.
Linux'ta Zombi İşlemler: Bunları Bulma ve Kaldırma
Zombi işlem, yürütülmesi tamamlanmış ancak çekirdeğin işlem tablosunda hala bir yer kaplayan alt işlemdir. Bu işlem, ana işlemin wait() çağırmadığı için var olur. Zombiler CPU veya bellek tüketmez, ancak her biri bir PID tutar. Bunlar yeterince birikirse, sisteminiz yeni işlemler başlatamaz. Bu yazı, bunları nasıl tespit edeceğinizi, kaldıracağınızı ve en başından ortaya çıkmalarını nasıl engelleyeceğinizi ele almaktadır.
Sunucularda Zombi İşlemlerin Önemi
Tek bir zombi zararsızdır. Sorun, bunlar birikmeye başladığında ortaya çıkar. Linux'un sınırlı bir PID alanı vardır: 32 bit sistemlerde 32.768, 64 bit sistemlerde ise 4.194.304'e kadar. Zombi süreçler süreç tablosunu doldurursa, çekirdek yeni süreçler oluşturamaz. Bu da yeni bağlantı, yeni iş parçacığı ve yeni hiçbir şeyin olamayacağı anlamına gelir.
Apache ve Nginx gibi web sunucuları, trafiği yönetmek için alt süreçler oluşturdukları için özellikle risk altındadır. Karşılaştırmalı testler, yoğun bir web sunucusunda zombiler biriktiğinde verimde %48'lik bir düşüş olduğunu göstermiştir. 2019'da, bir Kubernetes DNS pod'undaki Golang kanal sızıntısı, tek bir düğümde 26.000'den fazla zombi oluşturarak süreç tablosunu doldurmuş ve küme genelinde DNS çözümlemeyi çökertmiştir.
Aşağıdaki tablo, normal bir işlem ile bir zombi arasındaki temel farkları göstermektedir:
| Özellik | Normal İşlem | Zombi İşlem |
|---|---|---|
| Durum sembolü | R, S, D veya T | Z (geçersiz) |
| CPU / Bellek | Etkin kullanım | 0% / 0 (zaten sonlandırıldı) |
| İşlem tablosu girişi | Bir yuva | Bir yuva |
Yanıt kill -9 | Hemen sonlandırır | Etkisi yok (zaten ölü) |
| Çekirdek belleği | Tam işlem tanımlayıcı | Yalnızca minimum çıkış durumu |
Önemli çıkarım: kill -9 bir zombiyi temizleyemezsiniz. O zaten ölmüştür. Onu temizlemenin tek yolu, ana sürecin onu toplamasını sağlamak ya da ana süreci öldürerek init (PID 1) onu otomatik olarak devralıp temizlesin.
Zombi İşlemleri Nasıl Bulunur
Zombiler, STAT sütununda bir Z ile ve <defunct> komut adının yanında görünür. Bunları şu komutla listeleyin:
ps aux | grep -w ZKaldırma işlemi için ihtiyacınız olacak ana işlem kimliğini (PPID) görmek için:
ps -eo pid,ppid,stat,comm | grep -w ZBu top komut, başlık satırında toplam zombi sayısını da bildirir. Hızlı ve etkileşimsiz bir kontrol için:
top -bn1 | grep zombiepstree ile üst süreci izleme
Zombinin PID'sini aldıktan sonra, onu sorumlu ana sürece kadar geriye doğru izleyin:
pstree -p -s <zombie_pid>Bu, init zombiye kadar tüm soy ağacını gösterir. pstree yüklü değilse, ps auxf benzer bir ASCII ağaç görünümü sunar.
İzleme amacıyla zombileri sayma
Grep işleminin kendisini hariç tutan temiz bir sayım:
ps aux | awk '$8 ~ /Z/ {count++} END {print count+0}'Sorun giderme sırasında sürekli izleme için:
watch -n 1 'ps aux | grep -w Z | wc -l'Zombi İşlemleri Nasıl Kaldırılır
Zombiler, yalnızca çıkış durumları toplanarak kaldırılabilir. Bu, ana süreç üzerinden çalışmak anlamına gelir.
1. Ana süreci bulun.
ps -o ppid= -p <zombie_pid>2. Ana sürece, alt süreçlerini sonlandırması için sinyal gönderin.
kill -SIGCHLD <parent_pid>Bu, ana sürece wait() çağırmasını söyler. Bu işlem kesintiye neden olmaz ve düzgün çalışan uygulamalarda işe yarar.
3. SIGCHLD işe yaramazsa, hizmeti yeniden başlatın.
systemctl restart <service_name>4. Eğer ana süreç yanıt vermiyorsa, onu sonlandırın.
kill <parent_pid>Ya da SIGTERM'i görmezden geliyorsa:
kill -9 <parent_pid>Ana süreç öldüğünde, init (PID 1) ya da systemd yetim kalan zombileri evlat edinir ve hemen toplar. Üretim sistemlerinde dikkatli olun. Ana süreci sonlandırmak, tüm aktif alt süreçleri de sonlandırır.
5. Temizleme işlemini doğrulayın.
ps aux | awk '$8 ~ /Z/ {count++} END {print count+0}'Sayı 0 ise, sorun yok demektir.
Zombi İşlemleri Önleme
Kodunuzdaki alt süreçleri yönetin
Çoğu zombi birikiminin temel nedeni, hiçbir zaman wait(). Sorunu kaynağında giderin:
- C:
signal(SIGCHLD, SIG_IGN);'i, alt süreçlerin çıkış bilgilerini otomatik olarak atacak şekilde ayarlayın veyawaitpid(-1, NULL, WNOHANG)kullanarak asenkron olarak temizleyin. - Python: Otomatik olarak bekleyen
subprocess.run()kullanın, bu otomatik olarak bekler.Popenkullanıyorsanız,proc.wait()'yi açıkça çağırın. - Bash:
waitarka planda çalışan işleri başlatan komut dosyalarının sonuna ekleyin.
systemd'yi doğru şekilde yapılandırın
systemd tarafından yönetilen hizmetler için, bu ayarlar zombi birikimini önler:
KillMode=control-grouphizmet durduğunda tüm alt işlemlerin birlikte sonlandırılmasını sağlar.TimeoutStopSecsystemd SIGKILL göndermeden önce üst işleme alt işlemleri temizlemesi için zaman tanır.WatchdogSecyanıt vermeyen hizmetleri otomatik olarak yeniden başlatır ve ana sürecin kilitlenip temizlemeyi durdurduğu durumları yakalar.
İşlem tablonuzu izleyin
Zombileri saymak ve sayı bir eşiği aşarsa uyarı vermek için her 15 dakikada bir çalışan bir cron işi ayarlayın:
ps aux | awk '$8 ~ /Z/' | wc -lAyrıca, mevcut sayıyı /proc/sys/kernel/pid_maxile karşılaştırarak izleyin. Eğer %80'i aşarsa, sorun haline gelmeden önce araştırın. Normal çalışma sırasında birkaç geçici zombi endişelenecek bir şey değildir. Sıfıra düşmeyen artan bir sayı, düzeltilmesi gereken bir uygulama hatasına işaret eder.
Sonuç
Zombi süreçler, temizlenmemiş ölü çocuklardır. CPU veya bellek kullanmazlar, ancak PID'leri tutarlar ve dolu bir süreç tablosu, sunucunuzun yararlı herhangi bir şey yapmasını engeller.
- Bunları
ps aux | grep -w Zile bulun vepstree. - Ebeveyne
SIGCHLDkomutunu göndererek, hizmeti yeniden başlatarak veya son çare olarak üst süreci sonlandırarak kaldırın. - Bunu önlemek için
wait(), systemd'yi doğru şekilde yapılandırarak ve işlem tablonuzu izleyerek önleyin.
Yüksek trafikli iş yükleri çalıştırıyorsanız ve tam kök erişimine sahip güvenilir bir altyapıya ihtiyacınız varsa, FDC'nin özel sunucuları size işlem yönetimi ve sistem yapılandırması üzerinde tam kontrol sağlar.

Linux'ta Zombi Süreçler: Bul, Kaldır, Önle
Linux'ta zombi süreçleri nasıl tanımlayacağınızı, kaldıracağınızı ve önleyeceğinizi öğrenin. Sunucu yöneticileri için komutlar, kod düzeltmeleri ve izleme ipuçları.
15 dakikalık okuma - 19 Mayıs 2026
Linux Sunucu Güçlendirme Kontrol Listesi
15 dakikalık okuma - 8 Mayıs 2026

Sorularınız mı var veya özel bir çözüme mi ihtiyacınız var?
Esnek seçenekler
Küresel erişim
Anında dağıtım
Esnek seçenekler
Küresel erişim
Anında dağıtım