Bash 手册页:killvs 击杀-9

Bash 手册页:killvs 击杀-9

我的手册页没有记录以下两者之间的区别

kill <pid>

kill -9 <pid>

由于它们的作用不同为什么手册页中没有记录 -9 kill 我认为这可能是 shell 特有的东西,所以我也查看了 bash 手册页,但没有运气。

附加问题:-9 起什么作用?

答案1

kill只是向给定的进程发送一个信号。告诉-9它要发送哪个信号。

不同的数字对应不同的公共信号。SIGINT例如,是2,因此要向进程发送SIGINT信号,请发出命令

$ kill -2 <pid>

手册页在这里指定:

终止的默认信号是 TERM。

手册页还提供了您可以发送的信号表。根据此表,TERM15,因此这些都是等效的:

kill <pid>
kill -15 <pid>
kill -TERM <pid>

注意9是KILL信号。

   Name   Number  Action
   -----------------------
   ALRM      14   exit
   HUP        1   exit
   INT        2   exit
   KILL       9   exit  this signal may not be blocked
   PIPE      13   exit
   POLL           exit
   PROF           exit
   TERM      15   exit     [Default]
   USR1           exit
   USR2           exit
   VTALRM         exit
   STKFLT         exit  may not be implemented
   PWR            ignore    may exit on some systems
   WINCH          ignore
   CHLD           ignore
   URG            ignore
   TSTP           stop  may interact with the shell
   TTIN           stop  may interact with the shell
   TTOU           stop  may interact with the shell
   STOP           stop  this signal may not be blocked
   CONT           restart   continue if stopped, otherwise ignore
   ABRT       6   core
   FPE        8   core
   ILL        4   core
   QUIT       3   core
   SEGV      11   core
   TRAP       5   core
   SYS            core  may not be implemented
   EMT            core  may not be implemented
   BUS            core  core dump may fail

   XCPU           core  core dump may fail
   XFSZ           core  core dump may fail

答案2

默认信号是 TERM,它允许被终止的程序捕获该信号并在退出之前进行一些清理。如果这样编写,程序也可以忽略它。

指定 -9 或 KILL 作为信号不允许程序捕获它、执行任何清理或忽略它。它只能作为最后的手段使用。

要查看 Bash 中的数字和信号名称列表,请使用kill -l(字母 ell)。

答案3

我正在使用 Ubuntu Linux。

Kill 命令基本上是向进程发送信号以结束它。为了简化日常计算的复杂行为预期,kill 命令有各种选项。

正如上面解释的所有杀戮数字选项都与其定义相对应。

我想添加几行。

 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    

正如您上面看到的,这些都是您在运行 Ubuntu Linux 时将获得的终止选项。

但是某些终止信号在所有 *NIX 类型中都是通用的。

kill -9 是 SIGKILL 选项,内核无法忽略此信号,这意味着它必须遵守此 -9 或 SIGKILL 选项并立即退出进程。请记住,此进程无法由应用程序处理。

另一方面,kill -15 将发送 SIGTERM 信号,这意味着它将等待进程完全关闭后再退出。这是默认信号。

相关内容