แฟล็ก '-9' เป็นคำสั่ง kill หรือไม่


14

อะไร-9ทำอย่างไร

มันไม่ปรากฏในไวยากรณ์:

$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$

10
-9เป็นตัวอย่างของ-sigspecมันเทียบเท่ากับ-s 9หรือ-n 9หรือหรือ-s KILL -KILL
Gilles 'SO- หยุดความชั่วร้าย'

คำตอบ:


21

-9คือหมายเลขสัญญาณ (ในกรณีนี้SIGKILL) ดังนั้นkill -9ส่งSIGKILLไปยังกระบวนการที่เป็นปัญหา

สัญญาณนี้ทำให้กระบวนการยุติทันที (ยกเว้นกรณีที่รอในฟังก์ชันเคอร์เนล) สัญญาณไม่สามารถเพิกเฉยและกระบวนการรับสามารถดำเนินการล้างข้อมูลใด ๆ หลังจากรับสัญญาณ (เช่นSIGKILLไม่มีการเรียกใช้ตัวจัดการสัญญาณ) เห็นแล้วยังบทความวิกิพีเดีย SIGKILL

จากหน้า man ของkillคำสั่งของฉัน(Linux):

   The  default  signal  for  kill is TERM. Use -l or -L to list available
   signals.  Particularly useful signals include  HUP,  INT,  KILL,  STOP,
   CONT,  and  0.   Alternate  signals  may be specified in three ways: -9
   -SIGKILL -KILL.

แก้ไข : kill -l( bashคำสั่งในตัว) แสดงรายการชื่อสัญญาณและค่าตัวเลขต่อไปนี้ในระบบของฉัน:

 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

1
On Debian kill -l lists the numerical values too. What is your OS?
Faheem Mitha

interesting, I'm running Ubuntu (which is Debian based as far as I know). On the other hand, I just noticed that man kill list numeric values for some of the signals.
Andre Holzner

Well, kill is in procps, which is version 1:3.2.8-9 in Debian squeeze. And yes, Ubuntu is basically Debian. So I wonder why kill -l doesn't return the same thing.
Faheem Mitha

1
it turns out that I was running zsh's builtin kill command, not /bin/kill (which actually lists the numeric values as you say)
Andre Holzner

5
@FaheemMitha มีสองเหตุผลที่เชลล์จำเป็นต้องมีkillในตัว อนุญาตให้killคำสั่งยอมรับหมายเลขงานหรือชื่อ (เช่นkill %1) และช่วยให้killสามารถใช้งานได้แม้ว่าจะถึงขีด จำกัด การนับกระบวนการแล้วก็ตาม
Gilles 'หยุดความชั่วร้าย'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.