Linux 为什么我在bash中的kill-9命令上没有收到SIGKILL信号?
在bash脚本中,我处理不同的信号,如下所示:Linux 为什么我在bash中的kill-9命令上没有收到SIGKILL信号?,linux,bash,signals,Linux,Bash,Signals,在bash脚本中,我处理不同的信号,如下所示: #!/bin/bash sighdl () { echo "signal caught" #do something exit 0 } trap sighdl SIGKILL SIGINT SIGTERM 上述代码正确处理以下活动的信号: Ctrl+C kill pid pkillscriptname 对于kill-9pid它不调用sighdl。根据我的理解(如果我没有错)kill-9发送SIGKILL信号 有什么想法吗?你不能
#!/bin/bash
sighdl ()
{
echo "signal caught"
#do something
exit 0
}
trap sighdl SIGKILL SIGINT SIGTERM
上述代码正确处理以下活动的信号:
kill pid
pkillscriptname
kill-9pid
它不调用sighdl
。根据我的理解(如果我没有错)kill-9
发送SIGKILL信号
有什么想法吗?你不能那样做。是9是
SIGKILL
,Unix系统在设计上不允许任何脚本/程序由于安全原因而捕获SIGKILL
。否则,任何脚本都可以捕获并忽略SIGKILL,这将使操作系统无法终止该脚本。从man-9 KILL(不可捕获、不可忽略的KILL)
这是否意味着它不会调用sighdl
?无法捕获Sig KILL。。。有两个信号无法捕捉到,SIGKILL和SIGSTOP@Q_SaD..Any如何在kill-9
命令上通知我的脚本?SIGKILL实际上并不是一个信号,因为您没有请求进程响应操作。这只是一个向操作系统请求处理进程的请求,没有问题。好的。我可以用kill-9
附加用户定义的信号吗?因为我需要在用户以任何方式终止脚本进程时通知脚本。您不能在用户发送kill-9
时通知脚本。您可以捕获和处理的任何其他信号。@Jayesh简单地说,如果在用户发送SIGKILL
后脚本无法正确清理,那是用户的错误,而不是脚本的错误。这样想:如果你拔掉电脑的插头(或拔下电池),操作系统就不能正常关机,SIGKILL
软件等同于拔掉进程的插头。但是为什么trap blablakill
语法有效呢?问题是关于处理信号的9