Bir zombi sürecini sonlandırmak için adını süreç listesinden çıkarmalısınız.
Süreç nedir?
Her şey Pardus’ta bir program çalıştığında,başlar ve çalışan örneğine süreç denir. ps komutu ile Pardus ortamınızdaki tüm işlemleri görebilirsiniz.
PID TTY STAT TIME COMMAND
1 ? Ss 0:01 /sbin/init
2 ? S 0:00 [kthreadd]
3 ? I< 0:00 [rcu_gp]
4 ? I< 0:00 [rcu_par_gp]
6 ? I< 0:00 [kworker/0:0H-kblockd]
8 ? I< 0:00 [mm_percpu_wq]
9 ? S 0:00 [ksoftirqd/0]
Bazen bir süreç başka bir süreci başlatır ve ilk süreci ikincinin ebeveyni yapar. pstree komutu, sisteminizdeki süreçlerin “şeceresini” görmenizi sağlayan harika bir araçtır.
systemd─┬─ModemManager───2[{ModemManager}] ├─NetworkManager─┬─dhclient │ └─2[{NetworkManager}]
├─accounts-daemon───2*[{accounts-daemon}]
├─agetty
├─alsactl
Sistemde her işleme bir numara atanır. İşlem Kimliği numarası 1, önyükleme işlemi sırasında yürütülen ilk işleme atanır ve PID 1’den sonraki her sonraki işlem, onun soyundan gelir. PID 1 süreci, Linux’un çoğu yeni sürümünde systemd programına sadece sembolik bir bağlantı olan init’tir.
kill komutuyla bir işlemi sonlandırma
Pardus sistemindeki işlemleri kill komutuyla sonlandırabilirsiniz. İsmine rağmen, kill komutu ve pkill, killall gibi diğer komutlar, bir veya daha fazla işleme sinyal göndermek için yazıldı/tasarlandı. Gönderdiği varsayılan sinyal, işlemi sonlandırmak için kullanılan SIGTERM sinyalidir.
Bir ebeveyn süreci sonlandığında veya sonlandırıldığında ve onun alt süreci ebeveyninin sonlandığını takip etmiyorsa, ortada kalan bu sürece yetim süreç diyoruz.
zombi süreci nasıl sonlandırılır
Her alt süreç, sonlandırıldığında bir zombi süreç haline gelir ve ardından ebeveyn tarafından kaldırılır. İşlem varlığından çıkıp kullandığı kaynakları serbest bıraktığında, adı hala işletim sistemi işlem tablosundadır. Daha sonra adını süreç tablosundan çıkarmak ebeveynin sürecin işidir. Bu durum gerçekleşmediği takdirde artık gerçekten bir süreç değil, sadece işletim sisteminin süreç tablosundaki bir etiket olur.
Bu nedenle, feshedilmiş (zombi) bir işlemde -9 (SIGKILL) seçeneğiyle bile kill komutunu çalıştırmak işe yaramaz, çünkü sonlandıracak bir şey yoktur.
Zombi sürecini öldürmek için, adını süreç listesinden (süreç tablosu) kaldırmaya ihtiyaç olduğu gibi ebeveyn süreci de sonlandırmanız gerekir. Örneğin, PID 5878 bir zombi süreciyse ve üst öğesi PID 4809 ise, zombiyi (5878) öldürmek için üst öğeyi (4809) sonlandırın:
$ sudo kill -9 4809
Ana süreçleri öldürürken çok dikkatli olun. Bir işlemin ebeveyn süreci PID 1 ise ve onu sonlandırısanız, bilgisayarınız kendisini yeniden başlatacaktır.
Yazının orijinalini buradan okuyabilirsiniz.