Saya selalu ragu-ragu untuk menjalankan kill -9
, tapi saya melihat admin lain melakukannya hampir secara rutin.
Saya pikir mungkin ada jalan tengah yang masuk akal, jadi:
- Kapan dan mengapa harus
kill -9
digunakan? Kapan dan mengapa tidak? - Apa yang harus dicoba sebelum melakukannya?
- Melakukan debug seperti apa yang dapat menyebabkan masalah lebih lanjut dari proses "digantung"?
Jawaban yang Diterima:
Secara umum, Anda harus menggunakan kill
(kependekan dari kill -s TERM
, atau di sebagian besar sistem kill -15
) sebelum kill -9
(kill -s KILL
) untuk memberikan proses target kesempatan untuk membersihkannya sendiri. (Proses tidak dapat menangkap atau mengabaikan SIGKILL
, tetapi mereka dapat dan sering menangkap SIGTERM
.) Jika Anda tidak memberikan kesempatan kepada proses untuk menyelesaikan apa yang dilakukannya dan membersihkannya, proses tersebut dapat meninggalkan file yang rusak (atau status lainnya) yang tidak dapat dipahami setelah dimulai ulang.
strace
/truss
, ltrace
dan gdb
umumnya ide yang baik untuk melihat mengapa proses macet macet. (truss -u
di Solaris sangat membantu; Saya menemukan ltrace
terlalu sering menyajikan argumen untuk panggilan perpustakaan dalam format yang tidak dapat digunakan.) Solaris juga memiliki /proc
yang berguna -alat berbasis, beberapa di antaranya telah porting ke Linux. (pstack
sering membantu).