GNU/Linux >> Belajar Linux >  >> Linux

Kapan saya tidak boleh membunuh -9 proses?

Umumnya, Anda harus menggunakan kill (kependekan dari kill -s TERM , atau pada sebagian besar sistem kill -15 ) sebelum kill -9 (kill -s KILL ) untuk memberikan proses target kesempatan untuk membersihkan dirinya sendiri. (Proses tidak dapat menangkap atau mengabaikan SIGKILL , tetapi mereka dapat dan sering menangkap SIGTERM .) Jika Anda tidak memberikan kesempatan pada proses untuk menyelesaikan apa yang dilakukannya dan membersihkannya, proses tersebut mungkin meninggalkan file rusak (atau status lainnya) yang tidak dapat dipahami setelah dimulai ulang.

strace /truss , ltrace dan gdb umumnya ide bagus untuk melihat mengapa proses macet macet. (truss -u pada Solaris sangat membantu; Saya menemukan ltrace terlalu sering menampilkan argumen untuk panggilan perpustakaan dalam format yang tidak dapat digunakan.) Solaris juga memiliki /proc yang berguna alat berbasis, beberapa di antaranya telah di-porting ke Linux. (pstack sering membantu).


Randal Schwartz sering memposting "Penggunaan (x) yang tidak berguna" pada daftar. Salah satu postingan tersebut adalah tentang kill -9 . Itu termasuk alasan dan resep untuk diikuti. Ini adalah versi rekonstruksi (dikutip di bawah).

(Kutipan kekejian)

Tidak tidak tidak. Jangan gunakan kill -9.

Itu tidak memberi proses kesempatan untuk membersihkan:

1) matikan koneksi soket

2) bersihkan file temp

3) beri tahu anak-anaknya bahwa itu akan pergi

4) setel ulang karakteristik terminalnya

dan seterusnya dan seterusnya dan seterusnya.

Secara umum, kirim 15, dan tunggu satu atau dua detik, dan jika itu tidak berhasil, kirim 2, dan jika tidak berhasil, kirim 1. Jika tidak, HAPUS BINARI karena program berperilaku buruk!

Jangan gunakan kill -9. Jangan mengeluarkan pemanen gabungan hanya untuk merapikan pot bunga.

Hanya Penggunaan Usenet yang Tidak Berguna,

(.signature)


Seharusnya selalu OK untuk melakukan kill -9 , sama seperti mematikan dengan menarik kabel daya. Ini mungkin anti-sosial, dan meninggalkan beberapa pemulihan untuk dilakukan, tetapi itu harus berhasil, dan merupakan alat yang ampuh untuk yang tidak sabar.

Saya mengatakan ini sebagai seseorang yang akan mencoba pembunuhan biasa (15) terlebih dahulu, karena ini memberikan kesempatan pada program untuk melakukan pembersihan -- mungkin hanya menulis ke log "keluar pada sig 15". Tapi saya tidak akan menerima keluhan apa pun tentang perilaku buruk saat membunuh -9.

Alasannya:banyak pelanggan melakukannya untuk hal-hal yang lebih disukai pemrogram daripada tidak. Pengujian random kill -9 adalah skenario pengujian yang baik dan adil, dan jika sistem Anda tidak menanganinya, sistem Anda akan rusak.


Linux
  1. Bagaimana Jika 'kill -9' Tidak Berfungsi?

  2. Linux – Kapan Saya Tidak Harus Membunuh -9 Proses?

  3. Mengapa Sigint Tidak Dipropagasi ke Proses Anak Saat Dikirim ke Proses Induknya?

  1. bunuh Contoh Perintah di Linux

  2. bunuh:perintah tidak ditemukan

  3. Cara membunuh proses zombie

  1. Cara mematikan proses zombie di Linux

  2. Apa yang harus dilakukan ketika Ctrl + C tidak dapat menghentikan proses?

  3. Membunuh proses di Raspbian