问题描述
在bash脚本中,我按以下方式处理不同的信号:
In bash script I handle different signal as follows:
#!/bin/bash
sighdl ()
{
echo "signal caught"
#do something
exit 0
}
trap sighdl SIGKILL SIGINT SIGTERM
以上代码正确处理了以下活动:
Above code handle signal properly for following activity:
- +
-
kill pid
-
pkill脚本名称
- +
kill pid
pkill scriptname
对于 kill -9 pid
,它不会调用 sighdl
.根据我的理解(如果我没记错的话), kill -9
发送SIGKILL信号.
For kill -9 pid
it does not call sighdl
. As per my understanding (if I am not wrong) kill -9
sends the SIGKILL signal.
有什么主意吗?
推荐答案
您不能这样做.是9是 SIGKILL
,由于安全原因,Unix系统设计上不允许任何脚本/程序捕获 SIGKILL
.否则,任何脚本都会捕获&忽略SIGKILL,这将使OS无法终止该脚本.
You cannot do that. Yes 9 is SIGKILL
and Unix system by design doesn't allow any script/program to trap SIGKILL
due to security reasons. Otherwise any script can trap & ignore SIGKILL which will make impossible to terminate that script by OS.
这篇关于为什么我在bash中的kill -9命令上没有收到信号SIGKILL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!