GNU/Linux >> Belajar Linux >  >> Linux

Cara mematikan proses zombie di Linux

Selamat Halloween Open SOURCE-rer!

Inilah kisah setua zaman waktu. Sejak ada C dan Unix, dan (kemudian) Linux, kami memiliki zombie . Secara khusus, ada proses yang ditandai sebagai proses zombie . Disalahpahami oleh beberapa orang, diabaikan oleh orang lain, dan kebal terhadap upaya banyak dari kita yang mencoba kill proses ini tanpa banyak keberhasilan. Mengapa demikian?

Apa itu proses di Linux?

Semuanya dimulai ketika sebuah program di Linux dieksekusi, dan ketika itu terjadi, instance yang sedang berjalan disebut proses. Anda dapat melihat semua proses di lingkungan Linux dengan ps perintah.

$ ps -ax
        PID TTY         STAT   TIME COMMAND
        1 ?     Ss      0:01 /usr/lib/systemd/systemd rhgb --switched-root --sys
        2 ?     S       0:00 [kthreadd]
        3 ?     I<      0:00 [rcu_gp]
        4 ?     I<      0:00 [rcu_par_gp]

Terkadang sebuah proses memulai proses lain, menjadikan proses pertama sebagai induk dari proses kedua. pstree command adalah alat hebat yang memungkinkan Anda melihat "silsilah" proses di sistem Anda.

$ pstree -psn
systemd(1)─┬─systemd-journal(952)
        ├─systemd-udevd(963)
        ├─systemd-oomd(1137)
        ├─systemd-resolve(1138)
        ├─systemd-userdbd(1139)─┬─systemd-userwor(12707)
        │                     ├─systemd-userwor(12714)
        │                     └─systemd-userwor(12715)
        ├─auditd(1140)───{auditd}(1141)
        ├─dbus-broker-lau(1164)───dbus-broker(1165)
        ├─avahi-daemon(1166)───avahi-daemon(1196)
        ├─bluetoothd(1167)

Setiap proses diberi nomor dalam sistem. ID Proses nomor 1 ditetapkan ke proses pertama yang dijalankan selama proses boot, dan setiap proses berikutnya setelah PID 1 adalah turunannya. Proses PID 1 adalah init , yang pada sebagian besar versi Linux yang lebih baru hanyalah tautan simbolis ke systemd program.

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Mengakhiri proses dengan perintah kill

Anda dapat menghentikan proses di sistem Linux dengan kill   perintah. Terlepas dari namanya, kill perintah dan serangkaian perintah lainnya seperti pkill dan killall ditulis/dirancang untuk mengirim SINYAL ke satu atau lebih proses. Jika tidak ditentukan, SINYAL default yang dikirimkannya adalah sinyal SIGTERM untuk menghentikan proses.

Saat proses induk mati atau terbunuh, dan proses turunannya tidak mengikuti kematian induknya, kami menyebut proses tersebut sebagai proses yatim piatu .

Cara membunuh proses zombie

Proses zombie, di sisi lain, tidak bisa dibunuh! Mengapa mungkin Anda bertanya? Yah, karena mereka sudah mati!

Setiap proses anak, ketika dihentikan, menjadi proses zombie dan kemudian dihapus oleh induknya. Ketika proses keluar dari keberadaannya dan melepaskan sumber daya yang telah digunakannya, namanya masih ada di tabel proses OS. Kemudian tugas proses induk untuk menghapus namanya dari tabel proses. Ketika gagal, kita memiliki proses zombie, yang sebenarnya bukan proses lagi, tetapi hanya sebuah entri pada tabel proses OS.

Inilah sebabnya mengapa mencoba melakukan kill perintah bahkan dengan -9 Opsi (SIGKILL) pada proses yang mati (zombie) tidak berfungsi, karena tidak ada yang perlu dimatikan.

Jadi, untuk mematikan proses zombie, seperti menghapus namanya dari daftar proses (tabel proses), Anda harus membunuh induknya. Misalnya, jika PID 5878 adalah proses zombie, dan induknya adalah PID 4809, maka untuk membunuh zombie (5878) Anda mengakhiri induk (4809):

$ sudo kill -9 4809  #4809 is the parent, not the zombie

Kata peringatan terakhir saya tentang zombie. Berhati-hatilah saat mematikan proses induk. Jika induk dari suatu proses adalah PID 1 dan Anda mematikannya, Anda akan me-reboot sendiri!

Dan itu akan menjadi cerita yang lebih menakutkan untuk diceritakan!


Linux
  1. Cara menginstal vtop di Linux

  2. Bagaimana Cara Membunuh Proses yang Berjalan pada Port Tertentu di Linux?

  3. Bagaimana cara mematikan proses di Linux menggunakan perintah?

  1. Cara Menemukan dan Membunuh Proses Zombie di Linux

  2. Cara membunuh proses zombie

  3. Cara Menjeda/Melanjutkan Proses di Linux

  1. Bagaimana Membunuh Proses Yang Induknya Init?

  2. Linux:Temukan dan Bunuh Proses Zombie

  3. Bagaimana cara mematikan proses yang berjalan pada port tertentu di Linux?