Bagaimana cara membatalkan perintah macet di server ubuntu?

11

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)?

Gila
sumber

Jawaban:

21

CTRL+Cakan mengirim SIGINTke aplikasi. Aplikasi dapat mengonfigurasi handler untuk sinyal ini atau mengabaikan sinyal. Secara default tidak ada handler dan SIGINTakan 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 %%atau kill -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, SIGKILLyang 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 mengirim SIGKILLke proses, pertama menemukan proses dengan ps auxatau ps -edf, kemudian jalankan kill -SIGKILL <process_ID>, di mana <process_ID>adalah PIDkolom dalam psoutput.

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, psdan bash. Untuk melihat halaman manual gunakan sesuatu seperti:man ps

Mircea Vutcovici
sumber
2

Jika Anda memiliki akses konsol penuh, Anda dapat melakukannya Alt- F1..12dan mendapatkan konsol baru.

Dari sana, Anda dapat melakukan proses daftar seperti berikut:

ps aux | grep <process-name>

Kemudian lakukan killpada ID proses:

kill -9 <pid>

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.

warren
sumber
1

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.

Tim Brigham
sumber
1

Saya menganggap pgrepdan pkilllebih mudah digunakan daripada killdengan 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 thingdan pkill thingharus setara.

Begini cara kerjanya. Katakanlah ntpd digantung.

Apa saja prosesnya? (Anda dapat langsung beralih ke pkill jika Anda yakin tidak akan memiliki kesalahan positif).

$ pgrep -fl ntp
1034 /usr/sbin/ntpd
1037 /usr/sbin/ntpd

Bunuh prosesnya:

$ pkill ntpd

Gunakan pgreplagi untuk melihat apakah itu berhasil.

Jika tidak, akhirnya pindah ke pkill -9.

belacqua
sumber
0

Anda akan beralih ke terminal baru, menemukan PID dari proses macet (menggunakan ps), lalu gunakan killuntuk mematikan proses. Saya pertama kali akan menggunakan kill (PID). Jika itu tidak berhasil, saya akan gunakan kill -9 (PID). Jika itu tidak menghentikan proses, mesin harus di-boot ulang.

Bill Weiss
sumber
0

Cntrl+ \bekerja untuk saya (di mana Cntrl+ catau ztidak bekerja)

anggur
sumber