为什么我没有在bash中使用kill -9命令获取SIGKILL信号?

Jay*_*hoi 8 linux bash signals

在bash脚本中我处理不同的信号如下:

#!/bin/bash

sighdl () 
{
  echo "signal caught"
  #do something
  exit 0
}

trap sighdl SIGKILL SIGINT SIGTERM
Run Code Online (Sandbox Code Playgroud)

以上代码处理信号适合以下活动:

  1. Ctrl+C
  2. kill pid
  3. pkill scriptname

因为kill -9 pid它没有打电话sighdl.根据我的理解(如果我没有错)kill -9发送SIGKILL信号.

任何的想法?

anu*_*ava 14

你不能这样做.是9是由于安全原因SIGKILL,Unix系统设计不允许任何脚本/程序陷阱SIGKILL.否则,任何脚本都可以捕获并忽略SIGKILL,这将使OS无法终止该脚本.

  • @Jayesh简单地说,如果脚本在用户发送`SIGKILL`之后无法正常清理,那么它是*用户的*错误,而不是脚本的错误.可以这样想一想:如果要拔掉计算机(或拔出电池),操作系统无法正常关闭,而"SIGKILL"软件相当于拔掉插件. (3认同)