Untuk memahami masalah mengapa Ctrl + C tidak berfungsi, sangat membantu untuk memahami apa yang terjadi saat Anda menekannya:
Kebanyakan shell mengikat Ctrl + C untuk "mengirim sinyal SIGINT ke program yang sedang berjalan di latar depan". Anda dapat membaca tentang berbagai sinyal melalui man signal:
SIGINT 2 Term Interrupt from keyboard
Program dapat mengabaikan sinyal itu, karena mereka juga dapat mengabaikan SIGTSTP:
SIGTSTP 18,20,24 Stop Stop typed at tty
(Yang dilakukan kebanyakan shell saat Anda menekan Ctrl + Z , oleh karena itu tidak dijamin berhasil.)
Ada beberapa sinyal yang tidak dapat diabaikan oleh proses:SIGKILL, SIGSTOP dan lainnya. Anda dapat mengirim sinyal ini melalui perintah kill. Jadi, untuk mematikan proses hang / zombieying Anda, cari saja ID proses (PID). Misalnya, gunakan pgrep
atau ps
lalu kill
itu:
% kill -9 PID
Jika Ctrl +C (SIGINT) tidak berfungsi, coba Ctrl +\ (SIGQUIT). Lalu coba Ctrl +Z (SIGTSTP). Jika itu mengembalikan Anda ke prompt shell, lakukan kill
pada ID proses. (Ini default untuk sinyal SIGTERM, yang dapat Anda tentukan dengan kill -TERM
. Di beberapa shell, Anda mungkin dapat menggunakan %1
untuk merujuk ke PID.) Jika tidak berhasil, buka terminal lain atau sesi SSH dan lakukan kill
atau kill -TERM
pada ID proses. Hanya sebagai pilihan terakhir harus Anda lakukan kill -KILL
, alias kill -9
, karena tidak memberikan kesempatan pada proses untuk membatalkan secara bersih, menyinkronkan file yang terbuka, menghapus file sementara, menutup koneksi jaringan, dll.
Lihat tautan ini juga.
Ctrl +Z :menjeda proses.
Ctrl +C :dengan sopan minta proses untuk dimatikan sekarang.
Ctrl +\ :matikan tanpa ampun proses yang saat ini ada di latar depan