Rumah  >  Artikel  >  Tutorial sistem  >  Bagaimana untuk menangani proses zombi?

Bagaimana untuk menangani proses zombi?

WBOY
WBOYke hadapan
2024-03-06 20:10:241052semak imbas

Bagaimana untuk menangani proses zombi?

Apakah itu proses zombi?

Kita semua tahu bagaimana proses berfungsi. Kami memulakan program, memulakan tugas kami, dan kemudian apabila tugas selesai, kami menghentikan proses tersebut. Apabila proses berhenti, ia dikeluarkan daripada jadual proses.

Anda boleh melihat kemajuan semasa melalui System-Monitor.

Namun, kadangkala sesetengah atur cara masih kekal dalam jadual proses walaupun telah dilaksanakan.

Jadi, proses-proses yang telah menyelesaikan kitaran hayatnya tetapi masih kekal dalam jadual proses ini dipanggil "proses zombie".

Bagaimana untuk menangani proses zombi?

Kandungan

Bagaimana ia dihasilkan?

Apabila anda menjalankan program, ia akan melahirkan proses induk dan banyak proses anak. Semua proses kanak-kanak ini menggunakan memori dan sumber CPU yang diperuntukkan kepada mereka oleh kernel.

Selepas kanak-kanak ini memproses pelaksanaan yang lengkap, mereka akan menghantar isyarat Keluar dan kemudian mati. Isyarat Keluar ini perlu dibaca oleh proses induk. Proses induk perlu memanggil perintah wait untuk membaca status keluar proses anak dan mengalih keluar proses anak daripada jadual proses.

Jika proses ibu bapa membaca isyarat Keluar proses anak dengan betul, proses anak akan dipadamkan daripada jadual proses.

Tetapi jika proses induk gagal membaca isyarat Keluar proses anak, walaupun proses anak telah selesai dilaksanakan dan berada dalam keadaan mati, ia tidak akan dipadamkan daripada jadual proses.

Adakah proses zombi berbahaya kepada sistem?

Tak boleh. Oleh kerana proses zombi tidak melakukan apa-apa, jangan gunakan sebarang sumber dan tidak menjejaskan proses lain, tidak ada salahnya kewujudan proses zombi. Walau bagaimanapun, kerana status keluar dan maklumat proses lain dalam jadual proses juga disimpan dalam ingatan, kehadiran terlalu banyak proses zombi kadangkala boleh menjadi masalah.

Anda boleh bayangkan seperti ini:

"Anda adalah pemilik sebuah syarikat pembinaan. Anda membayar pekerja setiap hari berdasarkan beban kerja mereka. Ada seorang pekerja yang datang ke tapak pembinaan setiap hari dan hanya duduk di situ. Anda tidak perlu membayar, dan dia ' t buat apa-apa kerja. Dia buat saja setiap hari. Datang dan duduk di sana, itu sahaja!”

Pekerja ini adalah contoh hidup proses zombi. Tetapi, jika anda mempunyai ramai pekerja zombi, tapak pembinaan anda akan menjadi sesak menyukarkan pekerja biasa untuk bekerja.

Jadi bagaimana untuk mencari proses zombi?

Buka terminal dan masukkan arahan berikut:
ps aux | grep Z

Butiran semua proses zombi dalam jadual proses akan disenaraikan.

Bagaimana untuk membunuh proses zombi?

Dalam keadaan biasa kita boleh guna SIGKILL
isyarat untuk membunuh proses, tetapi proses zombie sudah mati, dan anda tidak boleh membunuh sesuatu yang sudah mati. Jadi arahan yang anda perlu masukkan hendaklah
kill -s SIGCHLD pid

Ganti pid di sini dengan id proses proses induk, supaya proses induk akan memadam semua proses anak yang telah selesai dan mati.

Anda boleh menganggapnya sebagai:

"Anda menjumpai mayat di tengah jalan, jadi anda menghubungi keluarga si mati, yang kemudian akan membawa mayat itu dari jalan raya."

Walau bagaimanapun, banyak program yang ditulis tidak begitu baik dan tidak boleh memadam zombi kanak-kanak ini (jika tidak, anda tidak akan melihat zombi ini pada mulanya). Oleh itu, satu-satunya cara untuk memastikan zombi kanak-kanak dipadamkan adalah dengan membunuh proses induk mereka.


Atas ialah kandungan terperinci Bagaimana untuk menangani proses zombi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam