2つのスクリプトがあります。最初は、基本的に下付き文字を呼び出してタイムアウトを設定するラッパーです。
#!/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 の最後に追加すると、「タイムアウトに達しました」というメッセージが表示されます。