我的手册页没有记录以下两者之间的区别
kill <pid>
和
kill -9 <pid>
由于它们的作用不同为什么手册页中没有记录 -9 kill
? 我认为这可能是 shell 特有的东西,所以我也查看了 bash 手册页,但没有运气。
附加问题:-9 起什么作用?
答案1
kill
只是向给定的进程发送一个信号。告诉-9
它要发送哪个信号。
不同的数字对应不同的公共信号。SIGINT
例如,是2,因此要向进程发送SIGINT
信号,请发出命令
$ kill -2 <pid>
这手册页在这里指定:
终止的默认信号是 TERM。
手册页还提供了您可以发送的信号表。根据此表,TERM
是15
,因此这些都是等效的:
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 信号,这意味着它将等待进程完全关闭后再退出。这是默认信号。