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