Saya menjalankan Bacula di kotak RedHat. Dari waktu ke waktu, daemon penyimpanan bacula-sd berhenti bekerja dan menjadi <defunct>
.
[root@backup ~]# ps -ef | grep defunct | more
root 4801 29261 0 09:25 pts/5 00:00:00 grep defunct
root 5825 1 0 Oct18 ? 00:00:00 [bacula-sd] <defunct>
Pertanyaan saya adalah, bagaimana saya bisa mematikan proses ini? Induknya adalah 1, yang merupakan init, sejauh yang saya tahu, dan saya tidak ingin membunuh proses init, bukan?
'Biasanya' membunuh proses ini tidak berhasil:
[root@backup ~]# kill -0 5825
[root@backup ~]# kill -9 5825
Bantuan sangat dihargai!
Edit: berjalan
[root@backup ~]# lsof -p 5825
menghasilkan output berikut:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bacula-sd 5825 root cwd DIR 253,0 4096 3801089 /root
bacula-sd 5825 root rtd DIR 253,0 4096 2 /
bacula-sd 5825 root txt REG 253,0 2110599 368004 /usr/local/sbin/bacula-sd
bacula-sd 5825 root mem REG 253,0 75284 389867 /usr/lib/libz.so.1.2.3
bacula-sd 5825 root mem REG 253,0 46680 3604521 /lib/libnss_files-2.5.so
bacula-sd 5825 root mem REG 253,0 936908 369115 /usr/lib/libstdc++.so.6.0.8
bacula-sd 5825 root mem REG 253,0 125736 3606807 /lib/ld-2.5.so
bacula-sd 5825 root mem REG 253,0 1602128 3606885 /lib/libc-2.5.so
bacula-sd 5825 root mem REG 253,0 208352 3606892 /lib/libm-2.5.so
bacula-sd 5825 root mem REG 253,0 125744 3606887 /lib/libpthread-2.5.so
bacula-sd 5825 root mem REG 253,0 25940 3604573 /lib/libacl.so.1.1.0
bacula-sd 5825 root mem REG 253,0 15972 3604535 /lib/libattr.so.1.1.0
bacula-sd 5825 root mem REG 253,0 46548 3606908 /lib/libgcc_s-4.1.2-20080102.so.1
bacula-sd 5825 root mem REG 253,0 56422480 366368 /usr/lib/locale/locale-archive
bacula-sd 5825 root 0r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 1r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 2r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 3u CHR 9,128 6469 /dev/nst0
bacula-sd 5825 root 4u IPv4 1023380 TCP backup:bacula-sd (LISTEN)
bacula-sd 5825 root 5u IPv4 2693268 TCP backup:bacula-sd->backup:53957 (CLOSE_WAIT)
bacula-sd 5825 root 7u IPv4 3248683 TCP backup:bacula-sd->backup:57629 (CLOSE_WAIT)
bacula-sd 5825 root 8u IPv4 3250966 TCP backup:bacula-sd->backup:37650 (CLOSE_WAIT)
bacula-sd 5825 root 9u IPv4 3253908 TCP backup:bacula-sd->backup:37671 (CLOSE_WAIT)
Jawaban:
Satu-satunya cara Anda bisa menghapus proses zombie / mati, adalah dengan membunuh orang tua. Karena induknya adalah init (pid 1), itu juga akan menghapus sistem Anda.
Ini cukup banyak membuat Anda memiliki dua opsi.
Saya akan memilih yang kedua.
sumber
init
karena tidak memiliki penangan sinyal untuk SIGKILL. Lihatman 2 kill
.init
pekerjaan adalah untuk menuai proses zombie, jadi jika Anda menunggu cukup lamainit
harus membersihkan proses zombie. Meskipun, kebanyakaninit
s harus mengatur handlerSIGCHLD
untuk menjadiSIG_IGN
yang memperbaiki ini.Anda dapat mencoba memulai kembali init:
Kalau tidak, saya tidak akan terlalu khawatir. Ini tidak berjalan dan tidak mengambil sumber daya apa pun dan hanya ada di sana sehingga kernel dapat mengingatnya.
sumber
Periksa apakah ada panik kernel,
Periksa apakah prosesnya dalam "D" Unkillable sleep, di mana itu dalam mode kernel untuk beberapa syscall yang belum kembali (baik kernel oops, atau alasan lain) http://www.nabble.com/What-causes-an -unkillable-process - td20645581.html
sumber
Jika zombie memiliki init sebagai induknya, maka init telah berhenti berfungsi dengan benar. Salah satu peran init adalah untuk membersihkan zombie. Jika tidak melakukannya, tidak ada orang lain yang akan melakukannya. Jadi satu-satunya solusi adalah reboot. Jika init rusak, maka reboot mungkin gagal, jadi saya akan mematikan layanan penting, sinkronkan sistem file lalu tekan tombol power.
sumber
upstart
dansystemd
.Mari kita tetap panik, ya? Proses "mati" atau "zombie" bukanlah proses . Ini hanyalah sebuah entri dalam tabel proses, dengan kode keluar yang disimpan. Jadi, zombie tidak memiliki sumber daya, tidak menggunakan siklus CPU, dan tidak menggunakan memori, karena itu bukan proses . Jangan menjadi aneh dan gatal mencoba untuk "membunuh" proses zombie. Sama seperti senama mereka, mereka tidak bisa dibunuh, karena mereka sudah mati. Tetapi tidak seperti jenis pemakan otak, mereka sama sekali tidak membahayakan siapa pun, dan tidak akan menggigit proses lain.
Jangan biarkan proses zombie memakan otak Anda. Abaikan saja.
sumber
Sepertinya Anda punya proses yatim. Sejauh yang saya tahu satu-satunya cara untuk membunuh ini adalah dengan reboot kotak. Saya pernah mengalami hal ini pada server ESX saya (yang merupakan linux di bawah tenda) dari waktu ke waktu dan reboot host adalah perbaikan (dari dukungan VMware).
Saya seorang pria Windows jadi ambil untuk apa nilainya.
sumber