Ada 5 proses yang tidak bisa dibunuh oleh kill -9 $PID
dan mengeksekusi cat /proc/$PID/cmdline
akan menggantung sesi saat ini. Mungkin itu adalah proses zombie.
Eksekusi ps -ef or htop
juga akan menggantung sesi saat ini. Tapi top
dan ps -e
bekerja dengan baik.
Jadi sepertinya ada dua masalah yang tidak ditanggapi oleh sistem file.
Ini adalah mesin produksi yang menjalankan mesin virtual, jadi me-reboot bukanlah pilihan.
Id proses berikut tidak berfungsi: 16181 16765 5985 7427 7547
Induk proses ini adalah init
├─collectd(16765)─┬─{collectd}(16776)
│ ├─{collectd}(16777)
│ ├─{collectd}(16778)
│ ├─{collectd}(16779)
│ ├─{collectd}(16780)
│ └─{collectd}(16781)
├─collectd(28642)───{collectd}(28650)
├─collectd(29868)─┬─{collectd}(29873)
│ ├─{collectd}(29874)
│ ├─{collectd}(29875)
│ └─{collectd}(29876)
Dan salah satu proses qemu tidak berfungsi
|-qemu-system-x86(16181)-+-{qemu-system-x86}(16232)
| |-{qemu-system-x86}(16238)
| |-{qemu-system-x86}(16803)
| |-{qemu-system-x86}(17990)
| |-{qemu-system-x86}(17991)
| |-{qemu-system-x86}(17992)
| |-{qemu-system-x86}(18062)
| |-{qemu-system-x86}(18066)
| |-{qemu-system-x86}(18072)
| |-{qemu-system-x86}(18073)
| |-{qemu-system-x86}(18074)
| |-{qemu-system-x86}(18078)
| |-{qemu-system-x86}(18079)
| |-{qemu-system-x86}(18086)
| |-{qemu-system-x86}(18088)
| |-{qemu-system-x86}(18092)
| |-{qemu-system-x86}(18107)
| |-{qemu-system-x86}(18108)
| |-{qemu-system-x86}(18111)
| |-{qemu-system-x86}(18113)
| |-{qemu-system-x86}(18114)
| |-{qemu-system-x86}(18119)
| |-{qemu-system-x86}(23147)
| `-{qemu-system-x86}(27051)
linux
process
kill
zombie-process
Sam Stoelinga
sumber
sumber
/usr/bin/strace ps -ef
untuk melihat di mana tepatnya Andaps -ef
menggantung.ps -el
berhasil dan di negara mana proses ini berlangsung?Jawaban:
Anda tidak memiliki zombie.
cat /proc/$PID/cmdline
tidak akan punya masalah dengan zombie. Jikakill -9
tidak mematikan program , itu berarti program sedang melakukan beberapa operasi I / O yang tidak pernah terputus. Itu biasanya menunjukkan satu dari tiga hal:Utilitas seperti
ps
mungkin hang jika mereka mencoba membaca beberapa informasi seperti jalur proses yang dapat dieksekusi yang tidak disediakan oleh kernel untuk salah satu alasan di atas.Coba
cat /proc/16181/syscall
lihat proses apa yang dilakukan 16181. Ini mungkin atau mungkin tidak berfungsi tergantung pada seberapa jauh sistem Anda berjalan.Jika masalahnya adalah sistem file jaringan, Anda mungkin dapat melepas-paksa secara paksa, atau membuatnya online. Jika masalahnya adalah bug kernel atau perangkat keras, apa yang dapat Anda lakukan akan tergantung pada sifat bug tersebut. Reboot (dan memutakhirkan ke kernel tetap, atau mengganti perangkat keras yang rusak) sangat disarankan.
sumber
Jawaban lain dengan asumsi ini adalah proses zombie. Proses zombie adalah proses yang telah selesai berjalan, tetapi masih dalam tabel proses jika orang tua ingin mengetahui status keluar. Ini adalah hal yang normal, dan
init
secara otomatis akan membersihkan proses zombie yang ditugaskan padanya.Proses zombie tidak boleh menyebabkan apa pun untuk digantung, jadi sepertinya itu bukan masalah Anda. Jika itu adalah panggilan sistem atau driver yang menggantung, maka prosesnya mungkin dalam keadaan tidak terputus. Ada penjelasan yang bagus di sini .
sumber
fork
dari berhasil (ketika sulitnrpoc
dicapai) karena mereka masih menempati ruang dalam tabel proses.Untuk menemukan proses zombie di Linux:
Pertama, Anda dapat mencoba mengirim sinyal SIGCHLD ke proses induk zombi menggunakan perintah kill. Perhatikan bahwa perintah di atas memberi Anda PPID (PID proses induk) dari masing-masing zombie. Dalam contoh kita, PPID zombie adalah
555
.Jika proses zombie masih belum hilang, Anda dapat membunuh proses induk (misalnya, 555) dari zombie.
Setelah proses induknya terbunuh, zombie akan diadopsi oleh proses init, yang merupakan induk dari semua proses di Linux. Proses init secara berkala memanggil
wait()
untuk menuai setiap proses zombie.sumber
Anda hanya dapat membunuh zombie dengan membunuh orang tuanya. Proses zombie telah merilis semua sumber dayanya dan menunggu status keluarnya diambil oleh induknya. Itu menjadi zombie ketika orang tua tidak mengeksekusi
wait
untuk mengambil status keluar dari anaknya. Ketika Anda membunuh orang tua zombie,init
mengambil status keluar dan zombie akhirnya mati.sumber
init
. Jika zombie direparasi di bawahinit
, Anda tidak bisa membunuhnya.