Mengakhiri proses adalah bagian penting dari manajemen proses di Linux.
Karena manajemen proses adalah topik tersendiri, saya tidak akan membahas detail pengelolaan proses pengguna dan penanganan sinyal di postingan ini.
Saya akan fokus menggunakan sinyal SIGTERM dan SIGKILL untuk menghentikan suatu proses. Saya juga akan membahas mengapa Anda harus menghindari penggunaan SIGKILL.
Apa itu SIGTERM?
Dalam sistem mirip UNIX, sinyal SIGTERM digunakan untuk mengakhiri program. Anda bisa menebaknya dari namanya yang terdiri dari SIGnal dan TERMinate.
SIGTERM juga dapat disebut sebagai soft kill karena proses yang menerima sinyal SIGTERM dapat memilih untuk mengabaikannya.
Dengan kata lain, ini adalah cara yang sopan untuk menghentikan proses.
Bagaimana cara mengirim SIGTERM ke proses di Linux?
Perintah kill di Linux digunakan untuk mengirim semua sinyal tersebut ke proses.
Secara default, perintah kill mengirimkan sinyal SIGTERM. Anda mungkin secara eksplisit menyebutkannya dengan -15 tetapi itu berlebihan.
Anda harus mengetahui pid proses untuk menggunakan perintah ini dengan cara berikut:
kill <process_id>
Anda dapat menggunakan perintah ps di Linux untuk mendapatkan ID proses.
Apa itu SIGKILL?
SIGKILL digunakan untuk penghentian segera suatu proses. Sinyal ini tidak dapat diabaikan atau diblokir. Proses akan dihentikan bersama dengan utasnya (jika ada).
Ini adalah cara brutal untuk membunuh suatu proses dan seharusnya hanya digunakan sebagai upaya terakhir. Misalkan Anda memiliki proses tidak responsif yang ingin Anda tutup. SIGKILL dapat digunakan dalam kasus seperti itu.
Bagaimana cara mengirim SIGKILL ke proses di Linux?
Anda dapat menggunakan opsi -9 untuk mengirim sinyal SIGKILL dengan perintah kill dan menghentikan proses dengan segera:
kill -9 <process_id>
SIGTERM vs SIGKILL:Mengapa Anda lebih suka menggunakan SIGTERM daripada SIGKILL?
Meskipun kedua sinyal ini digunakan untuk menghentikan proses, ada beberapa perbedaan di antara keduanya:
- SIGTERM dengan anggun menghentikan proses sedangkan SIGKILL menghentikan proses dengan segera.
- Sinyal SIGTERM dapat ditangani, diabaikan, dan diblokir, tetapi SIGKILL tidak dapat ditangani atau diblokir.
- SIGTERM tidak mematikan proses anak. SIGKILL juga mematikan proses anak.
Beberapa pengguna Linux terbiasa menggunakan 'kill -9' dan itu adalah sesuatu yang harus Anda hindari. Kecuali Anda memiliki proses yang tidak responsif, Anda tidak perlu menggunakan SIGKILL.
Dengan SIGTERM, suatu proses mendapat waktu untuk mengirim informasi ke proses induk dan anaknya. Proses turunannya ditangani oleh init.
Penggunaan SIGKILL dapat menyebabkan terciptanya proses zombie karena proses yang dimatikan tidak mendapat kesempatan untuk memberi tahu proses induknya bahwa ia telah menerima sinyal mematikan.
Komik dari Turnoff ini dengan lucu menjelaskan perbedaan antara SIGTERM dan SIGKILL.
Saya harap Anda memiliki pemahaman yang lebih baik tentang mematikan proses menggunakan SIGTERM atau SIGKILL sekarang.
Jika Anda memiliki pertanyaan atau saran, silakan tinggalkan komentar.