Pelajari Linux

Cara mematikan proses Zombie di Linux

Cara mematikan proses Zombie di Linux

Proses zombie di Linux mengacu pada proses yang sudah mati tetapi, dalam satu atau lain cara, masih ada di tabel proses sistem. Celahnya adalah, untuk beberapa alasan, proses ini tidak dibersihkan oleh induk dari tabel proses. Biasanya, ini terjadi setelah selesainya proses eksekusi.

Cara operasi yang biasa di Linux adalah bahwa setelah proses menyelesaikan eksekusinya, ia memberi tahu induknya, yang bertanggung jawab untuk menghapus proses dari tabel. Sayangnya, orang tua tidak dapat menghapus proses dari memori jika orang tua tidak dapat membaca status anak read. Beginilah kami memiliki proses mati di tabel proses. Inilah yang kami sebut proses zombie.

Apa yang menyebabkan proses Linux Zombie?

Ketika proses anak dibuat, proses induk yang ditulis dengan buruk mungkin gagal memanggil fungsi wait(). Akibatnya, anak-anak zombie-nya akan berlama-lama dalam ingatan sampai mereka padam.

Ini berarti bahwa tidak ada yang memantau proses bayi untuk perubahan status, dan sinyal SIGCHLD akan diabaikan. Mungkin aplikasi lain mengganggu eksekusi proses induk, baik melalui pemrograman yang buruk atau niat jahat.

Tata graha sistem yang tepat tidak akan terjadi jika proses induk tidak memperhatikan perubahan status dalam proses anak.

Ketika proses bayi selesai, PCB dan entri dalam tabel proses tidak akan dihapus. Keadaan zombie tidak pernah dihapus dari PCB sebagai akibat dari ini.

Zombie memang memiliki beberapa memori, tetapi biasanya tidak menjadi masalah. Karena sistem Linux memiliki jumlah PID yang terbatas (walaupun jumlahnya banyak), jika PID yang di-zombi cukup banyak, tidak ada proses lain yang dapat dimulai. Diragukan bahwa ini akan terjadi.

Namun, proses zombie menunjukkan bahwa ada yang tidak beres dengan aplikasi dan program tertentu mungkin memiliki bug.
Bug perangkat lunak di pusat data tidak boleh ditoleransi dan harus diatasi.
Anda harus mengawasi dan menghancurkan proses zombie sampai kesalahan diperbaiki.

ID proses tidak dapat digunakan kembali hingga diluncurkan, jadi entri tabel proses sangat kecil.
Karena PCB jauh lebih besar daripada entri tabel proses dalam sistem operasi 64-bit, ini tidak mungkin menyebabkan masalah.

Jumlah memori yang tersedia untuk proses lain dapat dipengaruhi oleh sejumlah besar zombie. Namun, jika Anda memiliki banyak zombie, Anda memiliki masalah parah dengan aplikasi induk atau bug di sistem operasi.

Jadi, apa yang Anda lakukan ketika prosedur berubah menjadi zombie? Anda melacak dan menghilangkan proses zombie.

Bagaimana menemukan proses zombie?

Perhentian awal untuk membunuh proses zombie dalam sistem adalah yang pertama mengidentifikasinya. Karena proses init membersihkan zombie secara teratur, yang harus Anda lakukan untuk menyingkirkannya adalah menghancurkan proses yang menciptakannya.

Perintah teratas adalah cara cepat untuk melihat apakah ada zombie di daerah Anda. Untuk mencapai ini, kami akan menjalankan perintah berikut:.

puncak

hasil perintah teratas

Jumlah proses zombie dalam sistem ini akan ditampilkan pada output. Dalam kasus kami di atas, kami memiliki 0 zombie.
Menggunakan perintah ps dan menyalurkannya ke egrep, kita bisa mendapatkan daftarnya. Bendera negara untuk proses zombie adalah "Z," dan Anda kadang-kadang akan melihat "mati" juga.

tuts@fosslinux:~$ ps aux | egrep "Z|tidak berfungsi"

Bendera negara untuk proses zombie adalah Z atau mati

Mari kita uraikan berbagai bagian dari perintah ini.

Z di kolom STAT dari output mengidentifikasi proses zombie.
[tidak berfungsi] di kolom (PERINTAH) terakhir dari output juga mengidentifikasi proses zombie.

Idealnya, tidak mungkin untuk membunuh proses Zombie karena sudah mati. Sebagai gantinya, kami memberi tahu orang tua untuk mencoba dan membaca status proses anak dan akhirnya membersihkannya dari tabel sistem. Untuk memicu proses ini, kami mengirim sinyal SIGCHLD ke induk proses. Mengidentifikasi ID proses induk atau yang disebut PID melibatkan menjalankan perintah berikut:

tuts@fosslinux:~$ ps -o ppid= 

Mengidentifikasi ID proses induk

Setelah mendapatkan PID Zombie, gunakan sinyal perintah SIGCHLD ke proses induk yang diidentifikasi sebelumnya.

tuts@fosslinux:~$ kill -s SIGCHLD 

gunakan perintah sinyal SIGCHLD

Dalam beberapa kasus, ini tidak menghapus proses Zombie. Ini memanggil kita untuk terlibat dalam rencana b atau c. Prior memerlukan memulai kembali proses induk atau mematikan proses induk. Di sisi lain, kasus terakhir melibatkan melakukan reboot sistem, terutama ketika proses Zombie dapat menyebabkan pemadaman atau lonjakan besar karena proses Zombie.

Di bawah ini adalah perintah untuk mematikan proses induk.

tuts@fosslinux:~$ bunuh -9 

perintah untuk mematikan proses induk

Jika proses induk dimatikan, dengan ekstensi, semua proses anak dari induk yang diberikan juga dibunuh. Jika salah satu proses anak sangat penting pada waktu tertentu, Anda mungkin perlu menunda pembunuhan sampai aman. Di sisi lain, pemeriksaan ulang cepat dapat memberi tahu Anda berapa banyak memori atau daya pemrosesan yang dikonsumsi oleh proses Zombie. Ini membantu menentukan apakah opsi yang lebih baik adalah mematikan prosesor induk untuk melakukan boot ulang sistem dalam siklus pemeliharaan sistem berikut yang sudah dijadwalkan.

Di Linux, bagaimana status proses bekerja?

Tentu saja, Linux harus melacak semua aplikasi dan daemon yang berjalan di komputer Anda. Mempertahankan tabel proses adalah salah satu cara untuk menyelesaikannya.
Ini adalah daftar struktur memori kernel. Daftar ini mencakup entri untuk setiap proses yang berisi beberapa informasi tentangnya. Setiap struktur tabel proses berisi informasi yang sangat sedikit.

Mereka menyimpan ID proses, beberapa informasi lain, dan penunjuk ke blok kontrol proses (PCB).

PCB adalah tempat Linux menyimpan semua informasi yang dibutuhkan untuk mencari atau mengatur untuk setiap proses. Saat sebuah proses dibuat, itu dimodifikasi, diberikan waktu pemrosesan, dan kemudian dihancurkan.

Ada lebih dari 95 bidang di PCB Linux. Itu didefinisikan dalam struktur tugas, yang panjangnya lebih dari 700 baris. Jenis informasi berikut dapat ditemukan di PCB:

Keadaan proses diilustrasikan di bawah ini:

Salah satu dari berikut ini dapat menjadi "Proses Status":

Kesimpulan

Kecuali mereka bagian dari gerombolan besar, Zombie tidak begitu berbahaya. Beberapa bukan masalah besar, dan reboot cepat akan menghapusnya. Namun, ada satu hal yang perlu dipertimbangkan.

Arsitektur Linux memiliki jumlah proses maksimum dan, sebagai hasilnya, jumlah nomor ID proses maksimum. Ketika jumlah maksimum proses zombie komputer tercapai, proses baru tidak dapat dimulai.

Proses zombie bukanlah proses; mereka adalah sisa-sisa proses mati yang proses induknya belum dibersihkan dengan benar. Namun, jika Anda melihat bahwa aplikasi atau proses tertentu terus-menerus memunculkan zombie, Anda harus menyelidiki lebih lanjut.

Kemungkinan besar, itu hanya program yang ditulis dengan buruk; dalam hal ini, mungkin ada versi terbaru yang membersihkan setelah turunannya memproses dengan benar.

Cara Mengganti Tombol Kiri & Kanan Mouse di PC Windows 10
Sudah menjadi hal biasa bahwa semua perangkat mouse komputer dirancang secara ergonomis untuk pengguna yang tidak kidal. Tetapi ada perangkat mouse ya...
Tiru klik Mouse dengan mengarahkan mouse menggunakan Clickless Mouse di Windows 10
Menggunakan mouse atau keyboard dalam posisi yang salah dari penggunaan yang berlebihan dapat menyebabkan banyak masalah kesehatan, termasuk keteganga...
Tambahkan gerakan Mouse ke Windows 10 menggunakan alat gratis ini
Dalam beberapa tahun terakhir, komputer dan sistem operasi telah berkembang pesat. Ada saat ketika pengguna harus menggunakan perintah untuk menavigas...