두 개의 스크립트가 있습니다. 첫 번째는 기본적으로 아래 첨자를 호출하고 시간 초과를 설정하는 래퍼입니다.
#!/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가 트랩 문 다음에 즉시 종료됩니다. while :; do :; done
main_script.sh 끝에 추가하면 "시간 제한에 도달했습니다"라는 메시지가 나타납니다.