Proses membunuh mau tidak mau bukanlah langkah yang mulus: data bisa hilang, aplikasi yang dirancang dengan buruk dapat memecahkan diri mereka dengan cara yang halus yang tidak dapat diperbaiki tanpa menginstal ulang .. tapi itu sepenuhnya tergantung pada mengetahui apa yang ada dan apa yang tidak aman dalam suatu situasi yang diberikan. dan apa yang akan beresiko. Pengguna harus memiliki gagasan tentang apa proses itu, atau seharusnya, melakukan dan apa kendala itu (disk IOPS, rss / swap) dan dapat memperkirakan berapa lama waktu yang diperlukan untuk proses yang berjalan lama (katakanlah salinan file, reencoding mp3, migrasi email, cadangan, [timesink favorit Anda di sini].)
Lebih jauh, mengirim SIGKILLke pid bukan jaminan untuk membunuhnya. Jika itu terjebak dalam syscall atau sudah zombie ( Zdi ps), mungkin terus zombie. Ini seringkali merupakan kasus proses yang berjalan lama dan lupa bgsebelum mencobanya kill -9. Sederhana fgakan menyambung kembali stdin / stdout dan mungkin membuka blokir proses, biasanya kemudian diikuti oleh proses penghentian. Jika macet di tempat lain atau dalam beberapa bentuk kebuntuan kernel lain, hanya reboot yang dapat menghapus proses. (Proses zombie sudah mati setelah SIGKILLdiproses oleh kernel (tidak ada kode userland lebih lanjut akan berjalan), biasanya ada alasan kernel (mirip dengan "diblokir" menunggu syscall untuk menyelesaikan) untuk proses tidak berakhir.)
Juga, jika Anda ingin membunuh proses dan semua anak-anaknya, biasakan menelepon killdengan PID yang dinegasikan, bukan hanya PID itu sendiri . Tidak ada jaminan SIGHUP, SIGPIPEatau SIGINTsinyal lain membersihkannya, dan memiliki banyak proses pembersihan yang tidak diakui (ingat anjing?) Menyebalkan.
Bonus jahat: kill -9 -1sedikit lebih merusak daripada kill -9 1(Jangan melakukan keduanya sebagai root kecuali Anda ingin melihat apa yang terjadi pada VM yang tidak penting dan tidak penting)