Proses zombie

Membaca entri dari hidup Saya ingat bahwa di forum seseorang meminta bantuan karena sistem mereka lambat, beberapa solusi difokuskan pada proses.

Status utama proses di Linux adalah:
Tidur (S) : Proses yang menunggu giliran untuk dieksekusi.
Lari (R) : Proses yang sedang berjalan.
Menunggu (D) : Proses menunggu operasi Masuk / Keluar selesai.
Zombi (Z) : Proses yang telah berakhir tetapi terus muncul di tabel proses. Mereka dapat disebabkan oleh kesalahan pemrograman dan dapat menjadi gejala sistem yang lambat atau menyebabkan masalah.

Proses Zombie adalah proses yang tidak pernah menerima sinyal dari proses induk yang membuatnya, proses anak adalah proses yang berawal dari proses tingkat yang lebih tinggi yang dikenal sebagai proses induk yang bertanggung jawab untuk mengirimkan sinyal ke proses anak yang dihasilkan oleh itu untuk menunjukkan bahwa masa hidupnya telah berakhir.

Mereka dapat disebabkan oleh kesalahan pemrograman dan dapat menjadi gejala sistem yang lambat atau menyebabkan masalah. Situasi ini biasanya terjadi, juga karena beberapa konfigurasi tidak dipertimbangkan oleh pengembang.

Di Wikipedia Anda bisa baca lebih lanjut tentang proses ini.

Menjalankan perintah teratas kita dapat melihat secara real time proses yang sedang dijalankan dalam sistem, dan itu akan menunjukkan jika ada dalam keadaan zombie, tetapi itu tidak menunjukkan yang mana.

proses

Untuk melihat semua proses, ketik terminal: ps aux, dan untuk hanya melihat zombie: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

Z 1945

Jika ketika membuat daftar proses, muncul dengan status Z, itu berarti itu adalah zombie, yang pada gilirannya berarti bahwa aplikasi tidak diselesaikan dengan baik atau memiliki bug, mengetahui PID-nya dapat dihilangkan dengan menjalankan perintah serupa di terminal kepada, dalam contoh ini: 

alf @ Alf ~ $ bunuh -9 1945

Ketika Anda memiliki banyak proses zombie atau setidaknya lebih dari satu, Anda dapat menggunakan perintah berikut yang membunuhnya, itu hanya berfungsi untuk itu, jika Anda menjalankannya tanpa proses zombie, tidak akan ada yang terjadi:

alf @ Alf ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{print $ 2}' ''

salam


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   tepat dijo

    🙁

  2.   oscar dijo

    Terima kasih, kontribusi yang sangat bagus, saya akan menyimpan perintah untuk melakukan verifikasi berkala.

  3.   Josh dijo

    Terima kasih, artikel bagus.

  4.   MSX dijo

    Beberapa klarifikasi tentang artikel Anda:

    Istilah "Proses zombie" secara teknis tidak tepat dan bagi kita yang memiliki sedikit pengalaman dengan GNU / Linux harus menghindari menggunakannya karena tidak ada proses yang berjalan sendiri, tetapi ini hanya referensi ke proses yang tidak lagi ada di sistem dan dia tidak melepaskan pengenalnya.

    Sebuah "proses zombie" sebenarnya adalah entri dalam tabel pemetaan dari pengenal proses (deskriptor proses), hanya saja, sehingga tidak mengkonsumsi sumber daya lebih dari beberapa byte memori yang digunakan sistem untuk melacak tabel proses.

    Satu-satunya masalah yang mungkin ada dengan pendeskripsi registri hantu (atau zombi) adalah bahwa jika pemunculan ini terlalu cepat, mereka secara teoritis dapat menempati seluruh tabel alokasi deskriptor proses, meninggalkan sistem tanpa ruang untuk rekaman baru sehingga berpotensi tidak mungkin untuk menjalankan yang baru program -yang merekam proses mereka- akhirnya menutup mesin.

    Namun, hal ini hampir tidak mungkin terjadi karena dalam sistem 32-bit terdapat 32767 ruang untuk mendaftarkan proses (jarang atau tidak pernah digunakan) dan dua kali lipat dalam sistem 64-bit.

    Satu-satunya cara untuk membuat sistem crash dengan proses mati yang dihapus dengan buruk adalah dengan membuat proses dan mematikannya dengan cepat tanpa membersihkan deskriptor proses dengan benar (yaitu, membuat "proses zombie") tetapi, hadapi saja, jika seseorang ingin menggantung sistem ada cara yang lebih langsung dari itu. untuk mulai membuat proses baru dengan cepat dengan cara eksponensial yang menghambat sistem dan membuatnya hang; salah satu cara untuk mencapai ini dengan bom garpu:

    : () {: |: &};:

    Anda dapat membuat sistem relatif tahan terhadap fork bomb dengan mengkonfigurasi /etc/security/limits.conf dengan benar, walaupun harus diperhatikan bahwa semakin kita membatasi kemungkinan membuat proses baru, kita akan dapat menjalankan lebih sedikit aplikasi secara bersamaan di sistem kami. Namun, ini adalah alat yang valid untuk semua sysadmin paranoid yang ingin memiliki kontrol yang sangat baik atas sistem mereka!

    Artikel ini memiliki info bagus tentang deskriptor proses yang tidak valid:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    Dan di sini ada penjelasan yang jelas tentang cara kerja bom garpu: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele dijo

      msx: «Istilah" Proses zombie "secara teknis tidak tepat dan bagi kita yang memiliki sedikit pengalaman di GNU / Linux harus menghindari menggunakannya ...» Ha ha ha. Hanya ada sesuatu yang lebih besar dari harga diri Anda: selera buruk Anda. Hei, apa yang kamu lakukan itu berselera buruk, jika kamu ingin memberi kuliah, kuliah di fakultas, atau membuat blog sendiri dan menulis apa yang kamu inginkan, tetapi datang ke sini untuk mengoreksi flat menjadi baik Alf benar-benar berasa buruk .

      1.    Ferdinand Rojas dijo

        Kebenaran bagi saya adalah komentar yang cukup menarik. Lebih dari sekadar pos

  5.   platonov.dll dijo

    terima kasih sangat menarik.

  6.   busuk87 dijo

    artikel bagus terima kasih

  7.   Alf dijo

    MSX
    «Istilah" Proses zombie "secara teknis tidak tepat dan kita yang memiliki sedikit pengalaman di GNU / Linux harus menghindari menggunakannya»

    Kami harus memberi tahu para pengembang, karena seperti yang akan Anda lihat, istilah zombie juga digunakan, di sana saya membacanya di konsol.

    salam

  8.   citux dijo

    Selamat, artikel yang sangat bagus, saya selalu ragu bahwa mereka adalah PZ tetapi saya tidak pernah punya waktu untuk menyelidikinya, sekarang saya membuka halaman dan saya menemukan jawabannya terima kasih …….

  9.   truko22 dijo

    Di KDE dengan control + escape system aktivitas keluar dan kita dapat membunuh zombie tersebut dengan cepat.

  10.   Rain dijo

    Koreksi, ini adalah ZOMBIE bukan proses ZOMBIE
    Zombie dalam bahasa Inggris
    Zombi dalam bahasa Spanyol

  11.   elynx dijo

    Mewah, terima kasih!.

  12.   Roberto dijo

    Pertama, istilah proses zombie tampaknya sepenuhnya benar. Juga istilah itu yang paling tidak penting.
    Intinya adalah seperti yang ditunjukkan msx, dan wikipedia yang sama (saya membaca artikel) proses zombie benar-benar mati.
    «Ketika suatu proses selesai, semua memori dan sumber daya terkait akan dideferensiasi, sehingga dapat digunakan oleh proses lain. Bagaimanapun, entri proses dalam tabel proses masih tetap »
    Artinya, proses tersebut tidak lagi memakan sumber daya sistem, oleh karena itu beban pada sistem menjadi minimal, seperti yang dijelaskan oleh msx.
    Namun, satu-satunya hal yang dimilikinya adalah entri yang tidak valid dalam tabel proses ... yang, jika jumlahnya ribuan, mungkin itu akan menjadi beban (bagaimanapun, prosesor harus membaca tabel proses dan itu akan membaca a banyak informasi yang tidak berguna) selain mencerminkan praktik pemrograman yang buruk (seseorang membuat aplikasi yang dibuat dengan buruk).
    Tetapi dengan sendirinya penjelasan dari posting itu tidak begitu benar dan yang benar adalah yang diberikan oleh msx.