zombie atau proses yang tidak berfungsi di Linux adalah proses yang telah selesai, tetapi entrinya masih ada di tabel proses karena kurangnya korespondensi antara proses induk dan anak. Biasanya, proses induk terus memeriksa status proses anaknya melalui fungsi wait(). Ketika proses anak selesai, fungsi tunggu memberi sinyal kepada orang tua untuk benar-benar keluar dari proses dari memori. Namun, jika induk gagal memanggil fungsi tunggu untuk anak-anaknya, proses anak tetap hidup dalam sistem sebagai proses mati atau zombie. Proses zombie ini mungkin menumpuk, dalam jumlah besar, di sistem Anda dan memengaruhi kinerjanya. Dalam hal ini, Anda mungkin harus membunuh zombie ini secara manual melalui cara dan perintah yang dijelaskan dalam tutorial ini.
Melihat Proses Zombie
Anda dapat memeriksa kinerja sistem Anda dengan melihat berbagai proses yang berjalan di sistem Anda, termasuk proses zombie yang mengubah efisiensi. Ubuntu memungkinkan Anda untuk melihat proses ini dengan cara berikut:
- Melalui Antarmuka Pengguna Grafis
- Melalui Baris Perintah
Melalui GUI
Untuk melihat secara grafis setiap proses zombie yang berjalan di sistem Anda, buka System Monitor utilitas melalui Dash Ubuntu Anda. Pada tangkapan layar Monitor Sistem saya berikut, Anda dapat melihat bahwa ada dua zombie yang berjalan di sistem saya. Mungkin juga jumlah proses zombie di sistem Anda mungkin lebih sedikit atau lebih banyak daripada yang berjalan di sistem saya.
Melalui Baris Perintah
atas perintah menampilkan tampilan rinci dari proses yang berjalan pada sistem Anda bersama dengan memori dan sumber daya CPU yang mereka gunakan. Ini juga memberi Anda informasi tentang proses zombie yang berjalan di sistem Anda. Buka Terminal dengan menekan Ctrl+Alt+T lalu ketik atas . Saya mendapatkan output berikut setelah menjalankan perintah ini.
$ atas
Anda dapat melihat di baris kedua bahwa ada 1 proses zombie yang berjalan di sistem saya.
Jika Anda ingin detail lebih lanjut tentang proses zombie, gunakan perintah berikut:
$ ps axo stat,ppid,pid,comm | grep -w defunct
Perintah ini akan memberi Anda status, parentID, ID proses, program yang menjalankan proses zombie (program dummy dengan nama 'zombie' di sistem saya). Bendera yang mati memberi tahu Anda bahwa ini adalah proses zombie yang mati.
Membunuh Proses Zombie
Pertama, mari kita pahami bagaimana proses zombie merupakan ancaman bagi kinerja sistem kita. Penting untuk mengetahui bahwa zombie sudah mati dan sebagian besar menyelesaikan proses yang tidak menggunakan memori atau sumber daya CPU. Namun, setiap proses ini memiliki ID proses unik yang ditetapkan untuknya yang berasal dari kumpulan PID terbatas yang disediakan untuk prosesor Anda. Jika zombie dalam jumlah besar berkumpul, mereka akan memakan sebagian besar kumpulan PID dan proses baru tidak akan dapat diluncurkan karena kurangnya ID proses.
Sejumlah kecil program mati yang menempati sistem Anda bukanlah ancaman besar, tetapi itu berarti program induknya tidak dapat menghentikannya karena bug atau fungsi wait() yang hilang.
Ketika proses induk belum dapat memanggil fungsi wait() secara otomatis, kita perlu memberi sinyal secara manual kepada proses induk untuk menjalankan fungsi wait pada semua anaknya sehingga yang dengan status lengkap dapat dipanggil kembali. Kita dapat melakukan ini dengan menjalankan perintah SIGCHLD. Jika itu tidak berhasil, kita dapat mematikan proses induk secara manual sehingga semua anak zombienya juga terbunuh, membebaskan ID proses untuk proses baru.
Anda dapat membunuh proses zombie melalui cara berikut:
- Melalui Antarmuka Pengguna Grafis
- Melalui Baris Perintah
Melalui GUI
Anda dapat mematikan proses zombie secara grafis melalui System Monitor Utility sebagai berikut:
- Buka Monitor Sistem utilitas melalui Ubuntu Dash.
- Telusuri istilah Zombie melalui Penelusuran tombol.
- Pilih proses zombie, klik kanan lalu pilih Bunuh dari menu.
Proses zombie akan dimatikan dari sistem Anda.
Melalui Baris Perintah
Setelah Anda mengetahui bahwa ada proses zombie yang berjalan di sistem Anda melalui perintah teratas, lihat detail prosesnya.
Cara yang biasa adalah dengan menggunakan perintah berikut yang menandakan proses induk zombie untuk mematikan perintah tersebut.
$ kill -s SIGCHLD PID
Perintah ini mungkin tidak berfungsi dalam beberapa kasus karena tidak semua proses induk diprogram dengan benar untuk memeriksa proses anak. Dalam hal ini, Anda dapat mematikan proses induk melalui perintah berikut:
$ sudo kill -9 3376
Ketika Anda telah membunuh semua proses zombie melalui cara ini dan menjalankan perintah teratas, Anda akan dapat melihat bahwa tidak ada lagi proses zombie yang berjalan di sistem Anda:
Setelah mengikuti tutorial ini, Anda dapat mengoptimalkan sistem operasi Anda dengan mencari proses zombie apa pun di sistem Anda dan mematikannya secara manual melalui baris perintah atau antarmuka pengguna grafis. Tindakan ini akan membebaskan ID proses untuk proses baru yang ingin Anda jalankan di sistem Anda.