Cara membunuh proses tidak responsif untuk membunuh -9

9

Saya melihat proses pada SGI Altix 450 saya menjalankan SLES 10.1 tampaknya berhenti berjalan (yaitu tidak memberikan output lebih lanjut dalam log mereka selama berjam-jam). Pada titik ini saya ingin mematikan proses yang menyinggung sehingga saya dapat memulai kembali. Top menunjukkan bahwa prosesnya dalam keadaan (R). Meskipun ketika saya mencoba untuk membunuhnya, tidak ada yang terjadi. Bahkan ketika saya menggunakan kill -9 masih tetap ada. Dalam hal ini apa yang bisa saya lakukan selain me-restart mesin?

Jared Brown
sumber
2
Apakah mereka id proses yang sama? Bukannya Anda mematikan proses dan beberapa daemon meluncurkan kembali proses dengan nama yang sama?
CK.

Jawaban:

9

Ada kemungkinan bahwa proses ini dibunuh tetapi menunggu orang tua untuk mengumpulkan nilai pengembaliannya. Dalam hal ini setelah terbunuh, ia akan berada dalam status 'Z' dan bukan 'R'. Dalam hal ini Anda harus menemukan ppidproses menggunakan psperintah dan membunuh proses induk juga (Jika Anda benar-benar yakin itu tidak akan menyebabkan masalah).

Kasus lain mungkin karena beberapa alasan proses dimulai kembali setelah terbunuh seperti tty. Dalam hal ini id proses harus berubah setiap kali Anda membunuh -9. Lihat apakah ID proses berubah setiap kali Anda mencoba membunuhnya.

Saurabh Barjatiya
sumber
Saya percaya saya mencoba untuk membunuh proses induk. Ini adalah proses induk yang dalam kondisi (R). pstree mengkonfirmasi ini. Proses anak-anak semuanya dalam status zombie (Z). Ppid tetap statis, jadi saya tidak percaya itu hanya restart.
Jared Brown
Jika Anda membunuh proses induk (dan proses induknya dan seterusnya) maka init akan menjadi induk dari proses anak yang dalam status 'Z' dan mengumpulkan nilai pengembaliannya. Jadi cara terbaik untuk menghapus anak 'Z' yang orang tuanya tidak mengambil nilai kembali mereka, adalah dengan membunuh orang tua juga sehingga init menjadi induk dari proses anak yang mati.
Saurabh Barjatiya
Ini adalah masalah yang saya alami. Mengirim sinyal -9 melalui kill ke proses induk tidak menghentikannya.
Jared Brown
1
Mengirim SIGHUP ke orang tua terkadang cukup. Anda tidak selalu harus membunuh orang tua.
Thomas
2
Maaf, SIGCHLD. (terlalu dini di pagi hari)
Thomas
2

Proses menunggu pada beberapa sumber daya sistem, mungkin NFS? itu tidak memungkinkannya untuk 'melepaskan'. Senang mendengar beberapa solusi untuk ini di luar tambang ...

reboot kotak, atau biarkan proses duduk.

Saya ingin tahu apakah Anda mungkin dapat 'BERHENTI' proses melalui kill -STOP {PID} untuk mencegahnya mengkonsumsi lebih banyak CPU.

Memulai ulang harus dimungkinkan bahkan dengan proses berhenti yang lain, tetapi mungkin memerlukan port daftar atau segmen memori bersama yang masih digunakan oleh proses lainnya.

ericslaw
sumber
1
Bukankah proses yang menunggu pada NFS atau beberapa fungsi I / O untuk diselesaikan berada dalam keadaan (D)? Proses-proses ini dalam keadaan (R).
Jared Brown
Inilah yang terjadi pada saya kadang-kadang ketika saya melakukan lsperintah pada s3fs mount. The lsProses tidak akan membunuh bahkan dengan kill -9sampai aku memaksa unmount denganumount -l
Marco Marsala
0

Sudahkah Anda memeriksa dmesg? Saya telah melihat ini setelah panik kernel; satu-satunya cara untuk memulihkan adalah dengan reboot (lebih disukai segera) - dan kemudian dapatkan kernel yang ditambal.

Proses normal yang tidak dapat diraih akan dalam kondisi D, bukan R.

derobert
sumber
Adakah yang bisa dilakukan tentang proses mati selain proses reboot? ppid = 1
Prof. Moriarty