bash:kill $$不起作用?

时间:2013-07-10 08:30:17

标签: linux bash kill

命令kill $$应该杀死当前的bash,但似乎它不起作用:

$ ps -p $$
  PID TTY          TIME CMD
18179 pts/4    00:00:00 bash
$ kill $$
$ ps -p $$
  PID TTY          TIME CMD
18179 pts/4    00:00:00 bash

为什么?

2 个答案:

答案 0 :(得分:8)

我不确定为什么会想kill当前的shell。尽管如此...

当没有指定信号时,

kill PID会发送SIGTERM。在没有任何陷阱的情况下,bash会忽略SIGTERMSIGQUIT

如果您要说

,您将获得所需的效果
kill -9 $$

kill -SIGKILL $$

引用manual

  

当Bash是交互式的时候,在没有任何陷阱的情况下,它会忽略   SIGTERM(以便'kill 0'不会杀死交互式shell),以及   捕获并处理SIGINT(以便等待内置   中断)。当Bash收到SIGINT时,它就会突然出现   执行循环。在所有情况下,Bash都会忽略SIGQUIT

答案 1 :(得分:0)

当您使用kill命令向任何信号发送进程时,进程可以根据需要选择处理信号。 (有一些信号无法处理。)

使用kill $$时,实际上是在传递信号= 15(SIGTERM)。它可以由一个过程处理。

您可以谷歌linux signal example了解它是如何实施的。

&安培;回答你的问题:  如果传递一个不可处理的信号,如SIGKILL(9)或SIGSTOP(19),它将分别杀死/停止正在运行的bash进程。