Apakah ada cara untuk membunuh proses zombie tanpa reboot? Inilah bagaimana ini terjadi:
Saya ingin mengunduh file 12GB menggunakan torrent. Setelah menambahkan file .torrent, transmisi berubah menjadi proses zombie (saya mencoba ktorrent juga. Perilaku yang sama). Akhirnya saya bisa mengunduh file menggunakan μTorrent tetapi setelah menutup program, itu berubah menjadi zombie juga.
Saya mencoba menggunakan kill
, skill
dan pkill
dengan berbagai opsi dan -9
sinyal tetapi tidak berhasil.
Setelah membaca beberapa solusi di web, saya menemukan bahwa membunuh orang tua dapat membunuh zombie. Tetapi membunuh anggur juga tidak membantu.
Apakah ada cara lain?
Sunting:
ps -o pid, ppid, stat, comm
PID PPID STAT COMMAND
7121 2692 Ss bash
7317 7121 R+ ps
pstree output:
init─┬─GoogleTalkPlugi───4*[{GoogleTalkPlug}]
├─NetworkManager─┬─dhclient
│ └─{NetworkManager}
├─acpid
├─amarok───19*[{amarok}]
├─apache2───5*[apache2]
├─atd
├─avahi-daemon───avahi-daemon
├─bonobo-activati───{bonobo-activat}
├─clock-applet
├─console-kit-dae───63*[{console-kit-da}]
├─cron
├─cupsd
├─2*[dbus-daemon]
├─2*[dbus-launch]
├─desktopcouch-se───desktopcouch-se
├─firefox───run-mozilla.sh───firefox-bin─┬─plugin-containe───8*[{plugin-contain}]
│ └─14*[{firefox-bin}]
├─gconfd-2
├─gdm-binary─┬─gdm-simple-slav─┬─Xorg
│ │ ├─gdm-session-wor─┬─gnome-session─┬─bluetooth-apple
│ │ │ │ ├─compiz───sh───gtk-window-deco
│ │ │ │ ├─fusion-icon
│ │ │ │ ├─gdu-notificatio
│ │ │ │ ├─gnome-panel───{gnome-panel}
│ │ │ │ ├─gnome-power-man
│ │ │ │ ├─gpg-agent
│ │ │ │ ├─gwibber-service
│ │ │ │ ├─nautilus
│ │ │ │ ├─nm-applet
│ │ │ │ ├─polkit-gnome-au
│ │ │ │ ├─2*[python]
│ │ │ │ ├─qstardict───{qstardict}
│ │ │ │ ├─ssh-agent
│ │ │ │ ├─tracker-applet
│ │ │ │ ├─trackerd
│ │ │ │ ├─wakoopa─┬─wakoopa
│ │ │ │ │ └─3*[{wakoopa}]
│ │ │ │ └─{gnome-session}
│ │ │ └─{gdm-session-wo}
│ │ └─{gdm-simple-sla}
│ └─{gdm-binary}
├─6*[getty]
├─gnome-keyring-d───2*[{gnome-keyring-}]
├─gnome-screensav
├─gnome-settings-
├─gnome-system-mo
├─gnome-terminal─┬─bash───ssh
│ ├─bash───pstree
│ ├─gnome-pty-helpe
│ └─{gnome-terminal}
├─gvfs-afc-volume───{gvfs-afc-volum}
├─gvfs-fuse-daemo───3*[{gvfs-fuse-daem}]
├─gvfs-gdu-volume
├─gvfsd
├─gvfsd-burn
├─gvfsd-computer
├─gvfsd-metadata
├─gvfsd-trash
├─hald─┬─hald-runner─┬─hald-addon-acpi
│ │ ├─hald-addon-cpuf
│ │ ├─hald-addon-inpu
│ │ └─hald-addon-stor
│ └─{hald}
├─indicator-apple
├─indicator-me-se
├─indicator-sessi
├─irqbalance
├─kded4
├─kdeinit4─┬─kio_http_cache_
│ └─klauncher
├─kglobalaccel
├─modem-manager
├─multiload-apple
├─mysqld───10*[{mysqld}]
├─named───10*[{named}]
├─nmbd
├─notification-ar
├─notify-osd
├─polkitd
├─pulseaudio─┬─gconf-helper
│ └─2*[{pulseaudio}]
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─smbd───smbd
├─snmpd
├─sshd
├─timidity
├─trashapplet
├─udevd───2*[udevd]
├─udisks-daemon─┬─udisks-daemon
│ └─{udisks-daemon}
├─upowerd
├─upstart-udev-br
├─utorrent.exe───{utorrent.exe}
├─vnstatd
├─winbindd───2*[winbindd]
├─wnck-applet
├─wpa_supplicant
└─xinetd
Monitor sistem dan pertunjukan teratas proses zombie menggunakan sumber daya:
Sunting 2: Saya pikir saya menemukan sesuatu. Saya mencoba keluar dan melihat pesan ini:
Karena klien torrent lain memiliki masalah yang sama, mungkin ini masalah ukuran file. Saya menggunakan ubuntu 10,04 pada partisi ext4. Membunuh nautilus dan mengirim sinyal SIGCHLD ke sana tidak berfungsi.
ps -o pid,ppid,stat,comm
danpstree
ke pertanyaan Anda?Jawaban:
Saya tidak menganggap proses zombie itu sakit kepala. Proses zombie tidak memakan sumber daya apa pun. Hanya saja ia memiliki entri di tabel proses.
Proses Zombie bukanlah proses anak yatim, ia memang memiliki orangtua.
kill
,skill
pkill
tidak akan berfungsi karena prosesnya sudah dimatikan, hanya saja entri itu belum dihapus.Proses zombie dapat dibunuh dengan mengirimkan
SIGCHLD
sinyal kepada orang tua. Saya pikir nomor sinyalSIGCHLD
adalah17
atau18
Jika ini juga gagal, maka Anda mungkin ingin membunuh orang tua itu sendiri.
Dari Wikipedia pada sinyal SIGCHLD:
EDIT 1 : Sumber daya sistem yang dikonsumsi sebagian besar adalah entri tabel proses. Jika ada yang tahu apakah itu mengkonsumsi lebih dari itu - siklus memori atau CPU, maka silakan tambahkan penjelasan. AFAIK hampir tidak memakan sumber daya sistem yang signifikan.
EDIT 2: Mengutip dari Wikipedia
Jadi entri disimpan sehingga proses orang tua dapat mengetahui status keluar karena saat anak keluar, orang tua mungkin tidak dalam keadaan atau tidak siap untuk membaca status keluar itu.
EDIT 3
Sampai saat ini saya tidak pernah mengalami proses zombie mengambil 100% dari CPU. Melihat ini untuk pertama kalinya.
Coba lakukan a
killall utorrent.exe
Saya dapat melihat bahwa ada dua contoh
utorrent.exe
dan salah satunya adalah zombie. Mungkin yang kedua (anak). killall harus membunuh orang tua karena anak (zombie) tidak dapat dibunuh.EDIT 4
Sepertinya killall tidak berfungsi karena memberikan sinyal JANGKA bukannya MEMBUNUH
Mencoba
killall --signal=KILL utorrent.exe
Jika ini tidak berhasil maka cobalah mematikan proses secara selektif.
Dapatkan daftar proses PID utorrent.exe
Anda harus mendapatkan dua proses seperti
Jadi yang kedua adalah orang tua. Bunuh itu menggunakan
EDIT 5
Silakan coba cari Id Induk proses dengan perintah bash ini
dalam kasus Anda adalah
Jika outputnya seperti
Maka sedihnya saya pikir Anda kurang beruntung. Id Proses
1
milik init yang tanpanya sistem Anda tidak dapat berjalansumber
A zombie process does not take up any resources
dan mengutipthe child is still consuming system resources ... it is known as a zombie process
.top -H
untuk menampilkan utas alih-alih proses di atas.Menggunakan
kill
pada proses itu sendiri memang tidak efektif, karena prosesnya sudah mati;kill
membawa proses langsung ke keadaan zombie.Proses induk bertanggung jawab untuk mengambil kode keluar dari proses; prosesnya tetap menjadi zombie sampai ini selesai. The
init
Proses akan mengambil kode keluar dari proses apapun dan membuangnya, jadi adalah "terakhir-resor" orang tua yang akan membersihkan setiap zombie yang merupakan keturunan langsung.Membunuh orang tua dari proses zombie biasanya efektif karena proses zombie kemudian kembali
init
sebagai orang tuanya segera setelah proses orang tua hilang (yaitu membunuh orang tua telah mengubah proses itu menjadi zombie, dan kakek-nenek telah membaca kode keluar orang tua , jadi orang tua benar - benar pergi). Zombie dapat menjadi induk bagi zombie, jadi membunuh orang tua saja tidak cukup, itu juga perlu dikumpulkan oleh proses lain itu sendiri.Perhatikan bahwa proses tidak pernah bertanggung jawab untuk membersihkan cucu mereka - mereka selalu kembali ke proses 1 sebagai orang tua (itulah sebabnya penulis daemon kadang-kadang menggunakan garpu ganda () dan menghentikan proses di tengah untuk sepenuhnya melepaskan proses anak dari proses memohon. kulit)
Alasan mengapa membunuh
wine
mungkin tidak efektif adalah karena itu bukan induk dari proses zombie; melainkan, "utorrent.exe" yang merupakan turunan langsung dari init adalah. Namun proses ini masih berjalan normal, hanya mengabaikan tugasnya.sumber
ps waux
daftar diPPID
kolom untuk zombie.Cara yang jauh lebih mudah daripada killall, -9, dll:
1) Gunakan qBitorrent sebagai ganti konsol uTorrent (Saya juga menunggu versi GUI dan qBitorrent pada dasarnya).
2) Jika Anda menggunakan 11.04 atau lebih tinggi, tekan alt + f2 (membuka jendela perintah khusus), ketik xkill dan mouse Anda sekarang adalah x. Klik pada program yang ingin Anda tutup (UI = ID proses) dan itu akan mematikannya untuk Anda.
Kiat lanjutan: ikat pintasan keyboard untuk "xkill" seperti yang saya miliki di keyboard makro G15.
sumber
Dalam kasus saya ketika anggur hang dan saya tidak bisa membunuh anak Zombie dengan senapan yang akan saya lakukan:
wineserver -k
maka saya akan membunuh "Anak Proses"killall -9 Oblivion.exe
(Misalnya)Untuk apa yang saya pahami Wineserver mengirimkan sinyal kepada semua Zombie Childs-nya bahwa mereka semua akan mati (karena senapan yang Anda tahu) tetapi kadang-kadang seorang anak berpikir dengan sendirinya dan ingin membawa dunia dengan badai. Jadi saya melakukan tambahan
killall -9
ataukill -9
dengan proses id.sumber
kill -s SIGCHLD ppid
Dugaan saya adalah bahwa Anda menggunakan SSD.
Saat menambahkan torrent besar ke klien torrent, file "placeholder" dari torrent yang Anda unduh sebenarnya dibuat pada disk, tetapi kosong hingga secara bertahap diisi selama proses pengunduhan.
Dengan hard disk normal, disk adalah penghambat, dan Anda tidak akan melihat masalah kinerja dengan seluruh desktop Anda.
Namun ketika menggunakan SSD, CPU adalah penghambat, dan aplikasi tampaknya rusak (menjadi abu-abu). Jika Anda membiarkannya sebentar, itu akan pulih dan semuanya akan baik-baik saja. Ini adalah pengalaman saya sejak beralih ke SSD.
Sehubungan dengan proses pembunuhan, yang lain telah memberikan saran yang lebih baik daripada yang saya bisa - menggunakan sinyal KILL biasanya bekerja, tetapi saya memiliki yang aneh yang membutuhkan restart selama bertahun-tahun.
sumber