서브쉘에서의 신호 전파가 궁금합니다. 다음 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 스크립트 자체에서 어리석은 작업을 수행하지 않았는지 확인하고 싶었습니다.