陷阱未捕获子脚本中的 SIGTERM

陷阱未捕获子脚本中的 SIGTERM

我有两个脚本。第一个基本上是调用下标并设置超时的包装器。

#!/bin/bash
# wrapper_script

timeout --signal=SIGTERM 50 main_script.sh

如果 main_script.sh 的执行时间超过 50 秒,我会尝试捕获 SIGTERM

#!/bin/bash
# main_script.sh

trap "echo 'Reached time limit'; rm $log_file; exit" SIGHUP SIGINT SIGTERM

我从来没有收到消息“达到时间限制”打印,子脚本被杀死,但它没有捕获 SIGTERM。我错过了什么吗?

答案1

至少在您提供的示例中,您的 main_script.sh 将在 trap 语句之后立即退出。如果我添加while :; do :; done到 main_script.sh 的末尾,我会得到“已达到时间限制”

相关内容