サブシェルと信号伝播

サブシェルと信号伝播

サブシェルでの信号伝播が気になります。次の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を送信することです。

私の問題は、何らかの方法でシグナルがサブシェル内のコマンドに到達できないことです。ただしsleep 1、トラップに簡単なコマンドを追加すると、信号が正しく伝播します。しかし、これはSGEの問題かもしれませんが、bashスクリプト自体で愚かなことをしていないことを確認したかったのです。

関連情報