Pertanyaan Mengapa nomor 9 dalam perintah kill -9 di unix?


Saya mengerti itu tidak masuk akal, saya tidak dapat menemukan tempat online dan saya berpikir mungkin para ahli pemrograman di komunitas mungkin mengetahui hal ini.
Saya biasanya menggunakan

kill -9 pid

untuk membunuh pekerjaan itu. Saya selalu bertanya-tanya asal-usul 9. Saya mencari tahu online, dan katanya

"9 Means KILL sinyal yang tidak dapat ditembus atau tidak dapat dinyalakan. Dengan kata lain itu akan menandakan proses (beberapa aplikasi yang berjalan) untuk segera berhenti" (sumber: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety)

Tapi, kenapa 9? dan bagaimana dengan nomor lainnya? apakah ada signifikansi historis atau karena arsitektur Unix?


75
2018-03-30 23:24


asal


Jawaban:


Lihat artikel wikipedia pada sinyal Unix untuk daftar sinyal lainnya. SIGKILL baru saja mendapatkan angka 9.

Anda juga dapat menggunakan mnemonik, seperti angka-angka:

kill -SIGKILL pid

73
2018-03-30 23:27



Ada 8 sinyal lain yang muncul pertama kali.


67
2018-03-30 23:26



Saya pikir jawaban yang lebih baik di sini hanyalah ini:

mike@sleepycat:~  kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP  
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    

Adapun "signifikansi" dari 9 ... Saya akan mengatakan mungkin tidak ada. Menurut Antarmuka Pemrograman Linux (p 388):

Setiap sinyal didefinisikan sebagai integer (kecil) yang unik, mulai   berurutan dari 1. Bilangan bulat ini didefinisikan dengan   nama simbolis dari bentuk SIGxxxx. Sejak angka yang sebenarnya digunakan untuk   setiap sinyal bervariasi di seluruh implementasi, ini adalah nama simbolis ini   yang selalu digunakan dalam program.


39
2017-11-13 00:59



Pertama Anda perlu tahu apa yang ada Sinyal dalam sistem mirip Unix (Hanya perlu beberapa menit).

Sinyal, adalah gangguan perangkat lunak yang dikirim ke program (berjalan) untuk menunjukkan bahwa peristiwa penting telah terjadi.

Peristiwa dapat bervariasi dari permintaan pengguna ke akses memori ilegal     kesalahan. Beberapa sinyal, seperti sinyal interupsi, menunjukkan bahwa a     pengguna telah meminta program untuk melakukan sesuatu yang tidak biasa     aliran kendali.

Ada beberapa jenis Sinyal yang dapat kita gunakan - untuk mendapatkan daftar lengkap dari semua penggunaan Sinyal yang tersedia / mungkin "$ kill-l"perintah: enter image description here

Pada output di atas terlihat jelas, bahwa setiap Sinyal memiliki 'nomor sinyal'(mis. 1, 2, 3) dan'nama sinyal'(misalnya SIGUP, SIGINT, SIGQUIT) yang terkait dengannya. Untuk melihat detail apa yang dilakukan setiap Sinyal, kunjungi ini link.

Akhirnya, datang ke pertanyaan "Mengapa nomor 9 masuk bunuh -9 perintah":

Ada beberapa metode penyampaian sinyal ke program atau skrip. Salah satu metode yang umum digunakan untuk mengirim sinyal adalah dengan menggunakan membunuh perintah - sintaks dasarnya adalah:

$ kill -signal pid

Di mana sinyal adalah baik jumlah atau nama dari sinyal, diikuti oleh proses Id (pid) ke mana sinyal akan dikirim.

Sebagai contoh - -SIGKILL (atau -9), sinyal membunuh proses segera.

$ kill -SIGKILL 1001

dan

$ kill -9 1001

kedua perintah adalah satu hal yang sama yaitu di atas kami telah menggunakan 'nama sinyal', dan kemudian kami telah menggunakan 'nomor sinyal'.

Putusan: Satu memiliki pilihan terbuka untuk apakah menggunakan 'nama sinyal' atau 'nomor sinyal' dengan membunuh perintah.


25
2018-02-27 14:00



Ini referensi ke "Revoulution 9" oleh The Beatles. Kumpulan klip suara yang dirangkai dan menemukan suara-suara, rekaman ini menampilkan John Lennon mengulang-ulang "Nomor 9, Nomor 9 ..." Selanjutnya, lagu ini menarik perhatian lebih lanjut pada tahun 1969 ketika ditemukan bahwa ketika dimainkan mundur, John tampak untuk mengatakan "Hidupkan aku, orang mati ..."

Oleh karena itu, sinyal kesembilan ditakdirkan untuk menjadi sinyal mematikan yang mematikan.


17
2018-01-15 14:52



Ada daftar panjang sinyal Unix, yang dapat Anda lihat di Wikipedia. Agak membingungkan, Anda benar-benar dapat menggunakannya kill untuk mengirim sinyal apa pun ke suatu proses. Contohnya, kill -SIGSTOP 12345 memaksa proses 12345 untuk menghentikan sementara eksekusi, sementara kill -SIGCONT 12345 mengatakannya untuk melanjutkan. Versi yang sedikit lebih samar kill -9 aku s kill -SIGKILL.


7
2018-03-30 23:32



Saya tidak berpikir ada signifikansi ke nomor 9. Selain itu, meskipun percaya umum, kill digunakan tidak hanya untuk mematikan proses tetapi juga mengirim sinyal ke suatu proses. Jika Anda benar-benar penasaran, Anda bisa membaca sini dan sini.


4
2018-03-30 23:32