Linux 为什么我在bash中的kill-9命令上没有收到SIGKILL信号?

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信号 有什么想法吗?你不能

在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信号


    有什么想法吗?

    你不能那样做。是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