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 SIGKILL
ke pid bukan jaminan untuk membunuhnya. Jika itu terjebak dalam syscall atau sudah zombie ( Z
di ps
), mungkin terus zombie. Ini seringkali merupakan kasus proses yang berjalan lama dan lupa bg
sebelum mencobanya kill -9
. Sederhana fg
akan 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 SIGKILL
diproses 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 kill
dengan PID yang dinegasikan, bukan hanya PID itu sendiri . Tidak ada jaminan SIGHUP
, SIGPIPE
atau SIGINT
sinyal lain membersihkannya, dan memiliki banyak proses pembersihan yang tidak diakui (ingat anjing?) Menyebalkan.
Bonus jahat: kill -9 -1
sedikit 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)