杀与杀的区别并杀死 -s TERM

杀与杀的区别并杀死 -s TERM

kill <pid>和之间到底有什么区别kill -s TERM <pid>。最初我认为该$TERM变量包含一个信号号,但是当我回显 TERM 时,它给了我

$echo $TERM
xterm-256color

答案1

没有区别。从man kill

Kill 的默认信号是 TERM。

kill -s TERM <pid>

才不是展开变量TERM,就像kill -s $TERM <pid>那样。它使用字符串TERM.

信号编号和名称之间的对应关系见man 7 signal。另外,从POSIX 规范kill(我的斜体),

-s signal_name
使用 <signal.h> 标头中定义的符号名称之一指定要发送的信号。signal_name 的值应以与大小写无关的方式进行识别,没有 SIG 前缀。另外,应识别符号名称0,表示信号值零。应发送相应的信号而不是 SIGTERM。

答案2

GNU coreutils kill(我安装的版本 8.32)有一个--table-L选项可以输出以下信息:

 1 HUP    Hangup: 1
 2 INT    Interrupt: 2
 3 QUIT   Quit: 3
 4 ILL    Illegal instruction: 4
 5 TRAP   Trace/BPT trap: 5
 6 ABRT   Abort trap: 6
 7 EMT    EMT trap: 7
 8 FPE    Floating point exception: 8
 9 KILL   Killed: 9
10 BUS    Bus error: 10
11 SEGV   Segmentation fault: 11
12 SYS    Bad system call: 12
13 PIPE   Broken pipe: 13
14 ALRM   Alarm clock: 14
15 TERM   Terminated: 15
16 URG    Urgent I/O condition: 16
17 STOP   Suspended (signal): 17
18 TSTP   Suspended: 18
19 CONT   Continued: 19
20 CHLD   Child exited: 20
21 TTIN   Stopped (tty input): 21
22 TTOU   Stopped (tty output): 22
23 IO     I/O possible: 23
24 XCPU   Cputime limit exceeded: 24
25 XFSZ   Filesize limit exceeded: 25
26 VTALRM Virtual timer expired: 26
27 PROF   Profiling timer expired: 27
28 WINCH  Window size changes: 28
29 INFO   Information request: 29
30 USR1   User defined signal 1: 30
31 USR2   User defined signal 2: 31

相关内容