Apakah ada perbedaan di antara keduanya
kill -9 212121
dan
kill 212121
command-line
bash
pengguna784637
sumber
sumber
kill -9
Jawaban:
Halaman manual Ubuntu untuk
kill
menjelaskan tujuan-9
sakelar (diakui dengan cara yang agak berombak):Inilah yang dikatakan halaman pria lain .
Oleh karena itu, menggunakan
-9
sakelar memastikan bahwa prosesnya terbunuh secara efektif. Meskipun proses yang beku atau tidak merespons mungkin tidak meresponsTERM
sinyal sederhana , proses itu akan mati saat mengirimKILL
sinyal.sumber
The kill Perintah akan mengirimkan didefinisikan sinyal ke proses dengan identitas yang diberikan (PID):
Tentu saja kita hanya bisa membunuh proses yang kita miliki, sedangkan root dapat membunuh semua proses. Lihat Wikipedia untuk ringkasan sinyal komputasi yang bagus.
Sinyal yang
kill
dapat dikirim tercantum di halaman manual . Sinyal dapat diwakili oleh nama atau nomor. Jika tidak ada sinyal diberikan sinyal default 15 resp.TERM
digunakan.Karena itu ketiga perintah di bawah ini identik:
Perbedaan antara
SIGTERM
danSIGKILL
cara aplikasi bertindak pada sinyal:TERM
: aplikasi akan dapat berakhir, yaitu menjalankan rutin shutdown dengan benar.KILL
: aplikasi dihentikan dan dibunuh segera (yang dapat menyebabkan kehilangan data atau meningkatkan peluang untuk melaporkan dugaan kerusakan dalam beberapa kasus).sumber
Perhatikan bahwa semua berikut ini sama:
Perlu ditunjukkan bahwa dalam dunia penanganan sinyal, SIGKILL adalah satu dari sedikit yang unik yang ditangani oleh sistem operasi, bukan programnya. Saat Anda menjalankan
kill -9
, Anda tidak memberi tahu aplikasi untuk menghentikannya sendiri, sebaliknya Anda memberi tahu OS untuk berhenti menjalankan program, apa pun yang sedang dilakukan program.Setelah SIGKILL dikirim, program akan segera dihentikan. Jika ada panggilan kernel yang berjalan (mis. File IO) atas nama program, panggilan tersebut dapat atau tidak dapat dilanjutkan sampai selesai, tergantung pada panggilan, tetapi program itu sendiri tidak akan berjalan lagi. Perhatikan bahwa tugas yang dilacak atau tugas yang berjalan di bawah debugger mungkin berperilaku berbeda di sini.
Sinyal lain yang tidak dapat diblokir adalah SIGSTOP yang memiliki efek serupa, tetapi malah membekukan program; Anda dapat mengirim SIGCONT nanti untuk melanjutkannya. Perilaku ini sepenuhnya dikendalikan oleh OS, dan program tidak mendapatkan pemberitahuan sebelumnya.
Semua sinyal lain dikirim ke program; itu dapat menangani mereka bagaimanapun ia memilih, atau jika mengabaikan sinyal maka perilaku standar diikuti.
Berikut adalah beberapa sinyal berguna yang mungkin Anda temukan dikirim ke suatu proses:
Memberitahu program yang diputus pengguna (mis. Sesi SSH atau jendela terminal ditutup).
Biasanya melakukan shutdown program dengan anggun.
Terkirim ketika Anda menekan CTRL+ C
Biasanya berarti "hentikan apa yang Anda lakukan" - mungkin atau tidak dapat membunuh program
Default dikirim oleh
kill
dankillall
.Biasanya menghentikan program ... kadang-kadang setelah program selesai apa pun yang dilakukannya.
Terkirim ketika Anda menekan CTRL+ Z
Menjeda program, dibahas di atas
Memberitahu program bahwa pipa telah ditutup. Biasanya mengakhiri program.
Misalnya
cat /etc/passwd | head -n1
akan mengirim SIGPIPE kecat
proses setelah baris pertama dicetak, menyebabkancat
terminasi sebelum menyelesaikan seluruh file.Sementara semua sinyal ini terjadi "secara alami" dalam pengaturannya sendiri, Anda dapat menggunakan sinyal untuk memalsukan suatu kondisi untuk mencapai hasil yang diinginkan.
Misalnya, jika Anda ingin mengakhiri sesi SSH seseorang, Anda bisa mematikan prosesnya, tetapi dengan melakukannya Anda akan mencegahnya memperbarui file SEJARAH, yang mungkin penting untuk alasan keamanan. Tetapi sebaliknya jika Anda mengirimnya SIGHUP , maka proses akan menganggap koneksi telah mati dan akan melakukan pembersihan standar.
sumber
SIGQUIT
, di mana tindakan default adalah membuang inti dan mengakhiri. Ini dapat digunakan jika suatu program melakukan sesuatu yang sangat salah, Anda harus segera menghentikannya, dan ingin dapat melakukan debug nanti.kill -9 Artinya: Proses akan dibunuh oleh kernel; sinyal ini tidak dapat diabaikan. 9 berarti sinyal KILL yang tidak dapat ditangkap atau diabaikan
Penggunaan: SIGKILL singal
Kill Meaning: Perintah kill tanpa sinyal melewati sinyal 15, yang menghentikan proses dengan cara normal.
Penggunaan: Sinyal SIGTERM , yang dapat ditangani oleh programmer
sumber