“ -9”是杀死命令的标志吗?


Answers:


21

-9是信号编号(在这种情况下为SIGKILL),因此kill -9将a发送SIGKILL到相关进程。

该信号导致进程立即终止(除非它正在内核函数中等待)。接收到信号后,不能忽略该信号,接收过程也不能执行任何清除操作(即,SIGKILL不调用for的信号处理程序)。另请参阅SIGKILL上Wikipedia文章

从我的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
在Debian上kill -l也会列出数值。您的操作系统是什么?
Faheem Mitha

有趣的是,我正在运行Ubuntu(据我所知,它是基于Debian的)。另一方面,我只是注意到man kill列出了一些信号的数值。
Andre Holzner

好吧,kill在中procps,这是1:3.2.8-9Debian压缩版。是的,Ubuntu基本上是Debian。所以我想知道为什么kill -l不返回相同的东西。
Faheem Mitha

1
原来,我正在运行zsh的内置kill命令,而不是/bin/kill(实际上如您所说的列出了数值)
Andre Holzner

5
@FaheemMitha外壳程序需要kill内置的原因有两个。它允许kill命令接受作业编号或名称(例如kill %1)。并且kill即使已达到某些过程计数限制,也可以使用它。
吉尔(Gilles)'所以

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.