子壳和信号传播

子壳和信号传播

我对子外壳中的信号传播感到好奇。我有以下 bash 脚本:

#!/bin/bash

function test_trap() {
   echo "hello"
}
trap 'test_trap' SIGUSR2

(#subshell
trap 'test_trap' SIGUSR2
some_command
)
other commands

然后我使用 SGE 网格引擎将其提交到网格。问题是,当我取消作业时,SGE 向其发送 SIGUSR2 信号,然后在预先配置的时间后(或者如果脚本不处理该信号或已经处理该信号)发送 SIGKILL。

我的问题是,不知何故,信号没有到达子 shell 内的命令。但是,如果我sleep 1向陷阱添加一个简单的命令,那么信号就会正确传播。然而,这可能是 SGE 问题,只是想确保我没有在 bash 脚本本身中做任何愚蠢的事情。

相关内容