Dari halaman manual untuk killall
killall mengirimkan sinyal ke semua proses yang menjalankan perintah yang ditentukan. Jika tidak ada nama sinyal yang ditentukan, SIGTERM dikirim.
Ketika Anda melakukan kill -9
, Anda mengirim sinyal SIGKILL. Jika Anda ingin mengirim SIGKILL dengan killall, Anda harus melakukannya
killall -s SIGKILL <PROCESSNAME>
Penjelasan yang baik tentang perbedaan antara SIGKILL dan SIGTERM (dan mengapa Anda harus mencoba SIGTERM terlebih dahulu)
Dari http://rackerhacker.com/2010/03/18/sigterm-vs-sigkill/
Mengirim sinyal ke proses menggunakan kill pada sistem Unix bukan topik baru untuk sebagian besar administrator sistem, tapi saya telah ditanya berkali-kali tentang perbedaan antara kill dan kill -9.
Setiap kali Anda menggunakan kill pada suatu proses, Anda sebenarnya mengirimkan sinyal proses (dalam hampir semua situasi - saya akan segera membahasnya). Aplikasi C standar memiliki file header yang berisi langkah-langkah yang harus diikuti oleh proses jika menerima sinyal tertentu. Anda bisa mendapatkan seluruh daftar sinyal yang tersedia di sistem Anda dengan memeriksa halaman manual untuk mematikan.
Pertimbangkan perintah seperti ini:
kill 2563
Ini akan mengirim sinyal yang disebut SIGTERM ke proses. Setelah proses menerima pemberitahuan, beberapa hal dapat terjadi:
- proses dapat segera berhenti
- proses dapat berhenti setelah penundaan singkat setelah membersihkan sumber daya
- proses mungkin terus berjalan tanpa batas
Aplikasi dapat menentukan apa yang ingin dilakukan setelah SIGTERM diterima. Sementara sebagian besar aplikasi akan membersihkan sumber daya mereka dan berhenti, beberapa mungkin tidak. Aplikasi dapat dikonfigurasikan untuk melakukan sesuatu yang sama sekali berbeda ketika SIGTERM diterima. Juga, jika aplikasi dalam keadaan buruk, seperti menunggu disk I / O, itu mungkin tidak dapat bekerja pada sinyal yang dikirim.
Sebagian besar administrator sistem biasanya akan menggunakan sinyal yang lebih tiba-tiba ketika aplikasi tidak menanggapi SIGTERM:
kill -9 2563
-9 memberitahu perintah kill yang ingin Anda kirim sinyal # 9, yang disebut SIGKILL. Dengan nama seperti itu, jelas bahwa sinyal ini membawa sedikit lebih berat.
Meskipun SIGKILL didefinisikan dalam file header sinyal yang sama dengan SIGTERM, itu tidak dapat diabaikan oleh proses. Bahkan, prosesnya bahkan tidak mengetahui sinyal SIGKILL karena sinyal langsung menuju ke kernel init. Pada saat itu, init akan menghentikan proses. Proses tidak pernah mendapat kesempatan untuk menangkap sinyal dan menindaklanjutinya.
Namun, kernel mungkin tidak berhasil mematikan proses dalam beberapa situasi. Jika proses menunggu I / O jaringan atau disk, kernel tidak akan dapat menghentikannya. Proses dan proses zombie yang tertidur lelap tanpa gangguan juga tidak bisa dihentikan oleh kernel. Reboot diperlukan untuk menghapus proses-proses tersebut dari sistem.
Ketika Anda mengirim killall (SIGTERM) ke proses thunderbird, Anda meminta proses tersebut untuk berhenti. Beberapa proses tersebut tidak berfungsi dengan benar (mungkin mengapa Anda harus membunuhnya sejak awal), sehingga mereka tidak dapat bertindak berdasarkan sinyal SIGTERM.
killall
menerima sebagian besar sintaks yang sama dengankill
. Secara khusus, tidak perlu menulis sesuatu yang mewah untuk melakukankillall
hal yang setarakill -9
. Ini berfungsi dengan baik:(Tentu saja, seperti yang dibahas, Anda biasanya harus enggan untuk menggunakan
killall -9
atau, dengan kata lainkillall -KILL
, kecuali tindakan lain telah dicoba tanpa keberhasilan.)sumber