Apakah ada perbedaan di antara keduanya
kill -9 212121
dan
kill 212121
Apakah ada perbedaan di antara keduanya
kill -9 212121
dan
kill 212121
Jawaban:
Halaman manual Ubuntu untuk kill
menjelaskan tujuan -9
sakelar (diakui dengan cara yang agak berombak):
Name Num Action Description
KILL 9 exit cannot be blocked
Inilah yang dikatakan halaman pria lain .
Perintah
kill
mengirim sinyal yang ditentukan ke proses atau grup proses yang ditentukan. Jika tidak ada sinyal yang ditentukan,TERM
sinyal dikirim. TheTERM
sinyal akan membunuh proses yang tidak menangkap sinyal ini. Untuk proses lain, mungkin perlu menggunakan sinyalKILL
(9
), karena sinyal ini tidak dapat ditangkap.
Oleh karena itu, menggunakan -9
sakelar memastikan bahwa prosesnya terbunuh secara efektif. Meskipun proses yang beku atau tidak merespons mungkin tidak merespons TERM
 sinyal sederhana , proses itu akan mati saat mengirim KILL
sinyal.
The kill Perintah akan mengirimkan didefinisikan sinyal ke proses dengan identitas yang diberikan (PID):
kill -<signal> <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:
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
Perbedaan antara SIGTERM
dan SIGKILL
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).Perhatikan bahwa semua berikut ini sama:
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
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:
kill
dan killall
. cat /etc/passwd | head -n1
akan mengirim SIGPIPE ke cat
proses setelah baris pertama dicetak, menyebabkan cat
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.
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
kill -9