いままでシェルスクリプトのsleepとループでぶん回していましたが……coreutilの中に便利なコマンドがありました……
実際のところ
$ [[ $( timeout --signal=SIGHUP --kill-after=2s 2s /home/shuzo/testExit.bash > /home/shuzo/log.log ) ]] && echo none
$ cat log.log tstHUP
$ cat testExit.bash #! /bin/bash function catchHup () { printf HUP } trap "printf '\n\r`basename $0` is closing.'" EXIT trap catchHup HUP printf "tst" read exit 0
ダメ押しのkill-after
その辺りを解決するにはkill-afterコマンドを。
一発目は二秒後にSIGHUPを送り、その2秒後にデフォのシグナル……SIGKILLを送ってるようですね。
これはループで書くのが少し面倒なとこなので見通しが良くなりますね。
~$ [[ $( timeout --signal=SIGHUP --kill-after=2s 2s /home/shuzo/testExit.bash > /home/shuzo/log.l og ) ]] && echo none