为什么我不能使用从 $$ 特殊变量获取的 PID 来杀死 shell?

为什么我不能使用从 $$ 特殊变量获取的 PID 来杀死 shell?

在我了解到$$特殊变量保存了 shell 的进程号后,我也尝试通过简单地杀死 shell:kill <pid obtained by echo $$>,但这不起作用,我也尝试了一些变体,但它们也没有效果。 在此输入图像描述

答案1

检查 bash 手册:

当 bash 是交互式的时,在没有任何陷阱的情况下,它会忽略 SIGTERM

https://www.gnu.org/software/bash/manual/bashref.html#Signals

检查kill帮助文本(help kill在 bash 提示符下):

如果 SIGSPEC 和 SIGNUM 都不存在,则假定为 SIGTERM。

https://www.gnu.org/software/bash/manual/bashref.html#index-kill

答案2

你可以,但是 shell 会努力不死,除非它完全确定这就是所需要的。

SIGHUP 有效(和 SIGKILL 一样),你可以尝试这个 -

kill -HUP $$

(如果您更喜欢数字信号标识符,HUP可以将其替换为1。)

起作用的原因SIGHUP是,这是当调制解调器上的串行线路连接终止时发送的信号 - 例如,如果电话线挂断。

相关内容