Dalam sistem Linux, proses zombi ialah proses khas yang telah ditamatkan tetapi masih kekal dalam sistem. Walaupun proses zombi tidak menggunakan banyak sumber, jika terlalu banyak, ia boleh menyebabkan kehabisan sumber sistem. Artikel ini akan memperkenalkan cara mengalih keluar proses zombi dengan betul untuk memastikan operasi normal sistem.
Selepas proses anak menyelesaikan tugas, jika proses ibu bapa tidak menyemak status dalam masa, proses anak akan menjadi proses zombie. Proses anak sedang menunggu pengesahan daripada proses induk, dan sistem tidak akan mengitar semulanya sehingga ia selesai. Jika tidak, proses zombi akan terus tergantung dalam sistem.
Untuk menyemak sama ada terdapat proses zombi dalam sistem, anda boleh menjalankan bahagian atas arahan untuk melihat semua proses yang sedang berjalan dan kemungkinan proses zombi.
Hasil arahan 'atas'
Daripada gambar di atas, anda boleh melihat nombor PID proses di Linux, dan anda juga boleh melihat di sudut kanan atas bahawa tiada proses zombie dalam sistem.
Adakah proses zombi berbahaya kepada sistem?
Proses zombi itu sendiri tidak akan menyebabkan kemudaratan kepada sistem Linux, tetapi jika terdapat terlalu banyak proses zombi, ia mungkin menyebabkan beberapa masalah kecil.
Proses zombi ialah proses yang telah menyelesaikan tugasnya dan sedang menunggu proses induknya untuk diproses. Jika terdapat terlalu banyak proses zombi, ia boleh menyebabkan masalah sistem.
Apabila proses zombi terkumpul terlalu banyak, prestasi sistem mungkin berkurangan. Oleh itu, adalah sangat penting untuk menyemak dan menyelesaikan masalah ini tepat pada masanya. Biasanya, tanggungjawab untuk membersihkan proses zombi terletak pada proses induk mereka. Jika proses induk tidak mengendalikan proses zombi dengan betul, ia boleh mengakibatkan pembaziran sumber sistem. Oleh itu, dengan segera menyemak dan melaraskan kaedah pemprosesan proses induk dapat mengelakkan kesan negatif proses zombi pada sistem dengan berkesan.
Untuk menghapuskan proses zombi, kami perlu mempelajari beberapa arahan untuk membantu kami mengenal pasti proses ini.
Arahan pertama untuk menyemak ialah ps. Perintah ps memaparkan proses aktif yang berjalan di Linux.
Namun, jika anda hanya menjalankan arahan ps, ia tidak akan memaparkan banyak maklumat berguna. Oleh itu, beberapa bendera lagi perlu ditambah untuk mendapatkan maklumat yang kita inginkan.
ps aux
a: Paparkan proses semua pengguna. u: Memaparkan pengguna/pemilik proses. x: Tunjukkan proses yang tidak disambungkan ke terminal.
Gambar
Proses dalam Linux
Seperti yang ditunjukkan dalam keputusan di atas, terdapat dua proses zombi dalam sistem. (STAT mereka ditunjukkan sebagai Z)
Memandangkan matlamat kami adalah untuk mencari proses zombi, kami perlu menapis proses tersebut dengan status Z (iaitu proses zombi) dan bukannya memaparkan semua proses yang sedang berjalan. Ini boleh dicapai menggunakan arahan grep.
ps aux | grep "Z"
Ini akan menapis semua proses zombi dalam sistem kecuali proses lain.
Nota: Jika tiada proses zombi dalam sistem dan anda ingin terus mempelajari artikel ini, anda boleh menjalankan arahan berikut untuk mencipta beberapa:
(sleep 1 & exec /bin/sleep 999) &
Apabila anda menjalankan perintah ps aux |. grep 'Z', ia akan memaparkan semua proses yang mengandungi huruf 'Z', termasuk arahan grep itu sendiri. Ini kerana arahan grep juga merupakan satu proses, dan tugasnya adalah untuk mencari proses yang mengandungi 'Z', jadi ia juga akan dicari dengan sendirinya. Oleh itu, untuk mengelakkan masalah ini, anda perlu menambah satu lagi paip |.
Untuk membunuh proses zombie sekarang, beberapa operasi yang rumit diperlukan, kerana proses zombie tidak boleh dibunuh secara langsung, tetapi proses induknya perlu dibunuh terlebih dahulu, dan kemudian proses zombie boleh dibunuh. Ini kerana proses zombi dicipta oleh proses induknya, dan proses zombi tidak boleh dikitar semula oleh sistem sehingga proses induk mengeluarkan sumbernya.
Pertama, anda perlu mencari proses induk, yang boleh dicapai menggunakan arahan mudah berikut:
ps -o ppid= -p [僵尸进程 PID]
(gantikan PID proses zombie dengan nombor PID sebenar)
Ini akan memaparkan PID proses induk bagi proses zombi dan kemudian menggunakan PID tersebut untuk membunuh proses induk.
Membunuh proses dalam Linux adalah mudah. Gunakan arahan bunuh untuk melakukan ini:
ps aux | grep 'Z' | grep -v grep
Ini akan menunjukkan hasil sebarang proses yang merupakan zombi. Kami mendapat nombor PID mereka dan kemudian menggunakan perintah ps -o ppid= -p [zombie process pid] untuk mencari PID proses induk proses zombie supaya kami boleh membunuhnya.
Gambar
Cari PID proses ibu bapa
Dalam contoh, terdapat tiga proses zombi dengan PID 109, 117 dan 119. Di sini kita dapati proses induk bagi proses zombi 109.
ps -o ppid= -p 109
Hasilnya sangat mudah Dalam contoh, hanya nombor PID yang dipaparkan: 108
Untuk mematikan proses, hanya gunakan arahan bunuh:
kill 108
Pada ketika ini, proses induk proses zombi 109 telah dibunuh.
Nota: Membunuh proses induk mungkin mempunyai kesan sampingan pada sistem atau aplikasi lain dan harus dilakukan dengan berhati-hati. Biasanya, membunuh proses induk harus dilakukan sebagai pilihan terakhir dan sebaiknya jangan mempertimbangkan untuk membunuh proses induk sehingga anda mencuba penyelesaian lain.
Dalam contoh, kami membunuh proses yang kami cipta sendiri untuk tujuan ujian, jadi tidak mengapa, tetapi apabila anda benar-benar memutuskan untuk membunuh proses ibu bapa, anda perlu memahami perkara yang anda lakukan. Mula-mula, cari proses induk, semak apa yang ia lakukan dan apa yang ia lakukan, dan kemudian pastikan anda tidak memecahkan apa-apa dengan membunuhnya. Akhirnya, anda boleh membunuhnya menggunakan arahan di atas.
Dengan membaca artikel ini, saya harap pembaca dapat memahami bahawa proses zombi tidak begitu dahsyat, walaupun ia boleh menyebabkan beberapa masalah, terutamanya apabila proses zombi mula sesak bersama-sama saya harap pembaca telah menguasai beberapa senjata/perintah, seperti menggunakan ps aux |. grep "Z" untuk mencari proses zombi dan mempelajari cara untuk membunuh mereka dan proses induknya tanpa merosakkan sistem.
Atas ialah kandungan terperinci Bagaimana untuk membunuh proses zombi dengan betul di Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!