我有两个脚本。第一个基本上是调用下标并设置超时的包装器。
#!/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 的末尾,我会得到“已达到时间限制”