Apa itu "Proses Zombie" di Linux?

Daftar Isi:

Apa itu "Proses Zombie" di Linux?
Apa itu "Proses Zombie" di Linux?

Video: Apa itu "Proses Zombie" di Linux?

Video: Apa itu "Proses Zombie" di Linux?
Video: Cek Data Pribadi Kamu Bocor Kemana Aja Pakai Website Ini - YouTube 2024, Maret
Anonim
Jika Anda adalah pengguna Linux, Anda mungkin telah melihat proses zombie bergejolak di sekitar daftar proses Anda. Anda tidak dapat membunuh proses zombie karena sudah mati - seperti zombie yang sebenarnya.
Jika Anda adalah pengguna Linux, Anda mungkin telah melihat proses zombie bergejolak di sekitar daftar proses Anda. Anda tidak dapat membunuh proses zombie karena sudah mati - seperti zombie yang sebenarnya.

Zombie pada dasarnya adalah sisa dari proses mati yang belum dibersihkan dengan benar. Program yang menciptakan proses zombie tidak diprogram dengan benar - program tidak seharusnya membiarkan proses zombie bertahan.

Apa itu Proses Zombie?

Untuk memahami apa itu proses zombie dan apa yang menyebabkan proses zombie muncul, Anda perlu memahami sedikit tentang cara kerja proses di Linux.

Ketika sebuah proses mati di Linux, itu tidak semua dihapus dari memori segera - deskriptor prosesnya tetap dalam memori (proses deskriptor hanya membutuhkan sedikit memori). Status proses menjadi EXIT_ZOMBIE dan orang tua proses diberi tahu bahwa proses anaknya telah mati dengan sinyal SIGCHLD. Proses induk kemudian seharusnya mengeksekusi tunggu () system call untuk membaca status keluar dari proses mati dan informasi lainnya. Ini memungkinkan proses orang tua untuk mendapatkan informasi dari proses mati. Setelah menunggu () dipanggil, proses zombie benar-benar dihapus dari memori.

Ini biasanya terjadi sangat cepat, jadi Anda tidak akan melihat proses zombie terakumulasi di sistem Anda. Namun, jika proses induk tidak diprogram dengan benar dan tidak pernah menelepon menunggu (), anak-anak zombie akan tetap tinggal di memori sampai mereka dibersihkan.

Utilitas seperti Monitor Sistem GNOME, teratas perintah, dan ps display perintah proses zombie.

Image
Image

Bahaya Proses Zombie

Proses zombie tidak menghabiskan sumber daya sistem apa pun. (Sebenarnya, masing-masing menggunakan jumlah memori sistem yang sangat kecil untuk menyimpan deskriptor prosesnya.) Namun, setiap proses zombie mempertahankan ID prosesnya (PID). Sistem Linux memiliki ID proses berhingga - 32767 secara default pada sistem 32-bit. Jika zombie terakumulasi pada tingkat yang sangat cepat - misalnya, jika perangkat lunak server yang tidak terprogram membuat proses zombie di bawah beban - seluruh kumpulan PID yang tersedia pada akhirnya akan ditetapkan ke proses zombie, mencegah proses lain dari peluncuran.

Namun, beberapa proses zombie yang berkeliaran tidak masalah - meskipun mereka menunjukkan bug dengan proses induknya di sistem Anda.

Image
Image

Menyingkirkan Proses Zombie

Anda tidak dapat membunuh proses zombie karena Anda dapat mematikan proses normal dengan sinyal SIGKILL - proses zombie sudah mati. Ingatlah bahwa Anda tidak perlu menyingkirkan proses zombie kecuali jika Anda memiliki jumlah besar di sistem Anda - beberapa zombie tidak berbahaya. Namun, ada beberapa cara Anda dapat menyingkirkan proses zombie.

Salah satu caranya adalah dengan mengirimkan sinyal SIGCHLD ke proses induk. Sinyal ini memberitahu proses induk untuk mengeksekusi tunggu () system call dan membersihkan anak-anak zombie-nya. Kirim sinyal dengan membunuh perintah, mengganti pid pada perintah di bawah ini dengan PID proses induk:

kill -s SIGCHLD pid

Namun, jika proses induk tidak diprogram dengan benar dan mengabaikan sinyal SIGCHLD, ini tidak akan membantu. Anda harus membunuh atau menutup proses induk zombie. Ketika proses yang menciptakan zombie berakhir, init mewarisi proses zombie dan menjadi induk baru mereka. (Init adalah proses pertama yang dimulai pada Linux saat boot dan ditugaskan PID 1.) secara berkala menjalankan perintah tunggu () sistem untuk membersihkan anak-anak zombie, sehingga init akan membuat pekerjaan singkat dari zombie. Anda dapat memulai ulang proses induk setelah menutupnya.

Jika proses induk terus menciptakan zombie, itu harus diperbaiki sehingga benar memanggil menunggu () untuk menuai anak-anak zombie. Laporkan laporan bug jika program di sistem Anda terus membuat zombi.

Direkomendasikan: