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

#!/bin/bash

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

trap sighdl SIGKILL SIGINT SIGTERM

上面的代码正确处理了以下事件的信号:
  • Ctrl + C
  • kill pid
  • pkill scriptname

  • 对于kill -9 pid,它不会调用sighdl。根据我的理解(如果我没记错的话),kill -9发送SIGKILL信号。

    任何想法?

    最佳答案

    你不能这样做。是9是SIGKILL,并且出于安全原因,Unix设计上不允许任何脚本/程序捕获SIGKILL。否则,任何脚本都会捕获并忽略SIGKILL,这将使OS无法终止该脚本。

    关于linux - 为什么我在bash中的kill -9命令上没有收到信号SIGKILL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22807714/

    10-11 17:27