Saya tahu ada ctrl+ c, tapi terkadang itu tidak berhasil. Di desktop Ubuntu saya bisa menutup jendela terminal dan membuka yang baru ketika ini terjadi, tetapi bagaimana ini akan diselesaikan dengan menggunakan CLI di server Ubuntu (tanpa me-restart kotak)?
server
command-line
Gila
sumber
sumber
Jawaban:
CTRL+Cakan mengirim
SIGINT
ke aplikasi. Aplikasi dapat mengonfigurasi handler untuk sinyal ini atau mengabaikan sinyal. Secara default tidak ada handler danSIGINT
akan mematikan aplikasi.Anda dapat menggunakan CTRL+\yang akan dikirim
SIGQUIT
. Ini juga akan menghasilkan dump inti jika batas inti tidak nol.Anda dapat menunda proses dan kembali ke shell dengan CTRL+Z, ini akan menghentikan eksekusi proses dan kembali ke prompt shell. Prosesnya akan berada di memori dan akan tersedia sebagai pekerjaan di shell saat ini. Anda kemudian dapat menggunakan
kill -SIGNAL %%
ataukill -SIGNAL %<job_ID>
mengirim sinyal ke pekerjaan itu. Misalnya untuk mematikan penggunaan pekerjaan terakhirkill -9 %%
Jika tidak ada yang berfungsi, Anda selalu dapat mengirim
SIGTERM
, sebagai upaya terakhir,SIGKILL
yang akan menghentikan proses apa pun. Sinyal ini sebagai sinyal lain harus dikirim sebagai pengguna yang sama dengan proses yang Anda coba hentikan atau sebagai root. Untuk mengirimSIGKILL
ke proses, pertama menemukan proses denganps aux
ataups -edf
, kemudian jalankankill -SIGKILL <process_ID>
, di mana<process_ID>
adalahPID
kolom dalamps
output.Sinyal tidak dapat dikirim jika prosesnya dalam panggilan yang tidak terputus. Panggilan yang tidak terputus adalah fungsi kernel yang tidak dapat dihentikan dan biasanya terjadi karena driver yang buruk (mis. Driver yang tidak reentrant ). Suatu proses yang dalam tidur tidak terputus tidak dapat dihentikan sampai panggilan selesai atau server reboot.
Jika suatu proses menjadi zombie , itu tidak akan menggunakan sumber daya apa pun hanya mengambil ruang dalam tabel proses. Proses zombie tidak dapat menerima sinyal.
Daftar sinyal untuk arsitektur saat ini dapat ditemukan
kill -l
Lihat halaman manual
kill
,ps
danbash
. Untuk melihat halaman manual gunakan sesuatu seperti:man ps
sumber
Jika Anda memiliki akses konsol penuh, Anda dapat melakukannya Alt- F1..12dan mendapatkan konsol baru.
Dari sana, Anda dapat melakukan proses daftar seperti berikut:
Kemudian lakukan
kill
pada ID proses:Jika Anda tidak memiliki akses konsol penuh, cukup buka jendela terminal lain (mungkin melalui Putty atau serupa), dan lakukan proses di atas daftar dan membunuh langkah-langkah.
sumber
Ctrl C mengirimkan SIGINT ke proses Anda yang sedang berjalan. Jika Anda tidak ingin membuka konsol lain, Anda dapat mengirim SIGQUIT dengan Ctrl \. Ini akan mengatasi sebagian besar aplikasi yang digantung sehari-hari yang tidak dimiliki SIGINT.
Saya pribadi menginginkan cara untuk mengirim SIGKILL dengan jalan pintas, tetapi saya tidak mengetahui cara untuk melakukannya.
sumber
Saya menganggap
pgrep
danpkill
lebih mudah digunakan daripadakill
dengan ID proses yang eksplisit.Selain itu, alih-alih memulai dengan sinyal 9 (SIGKILL), pertimbangkan untuk memulai dengan SIGTERM default (15). Ini akan memberi proses kesempatan untuk mengakhiri dengan anggun (jika bisa).
pkill -15 thing
danpkill thing
harus setara.Begini cara kerjanya. Katakanlah ntpd digantung.
Apa saja prosesnya? (Anda dapat langsung beralih ke pkill jika Anda yakin tidak akan memiliki kesalahan positif).
Bunuh prosesnya:
Gunakan
pgrep
lagi untuk melihat apakah itu berhasil.Jika tidak, akhirnya pindah ke
pkill -9
.sumber
Anda akan beralih ke terminal baru, menemukan PID dari proses macet (menggunakan
ps
), lalu gunakankill
untuk mematikan proses. Saya pertama kali akan menggunakankill (PID)
. Jika itu tidak berhasil, saya akan gunakankill -9 (PID)
. Jika itu tidak menghentikan proses, mesin harus di-boot ulang.sumber
Cntrl+ \bekerja untuk saya (di mana Cntrl+ catau ztidak bekerja)
sumber