echo
SIGSTOP
または、信号が受信されたときに応答するスクリプトが提供されますSIGHUP
。
$cat test.sh
function clean_up {
echo "cleaning up!"
}
echo 'starting!'
trap clean_up SIGSTOP SIGHUP
sleep 100
私はそれをバックグラウンドで実行します:
$./test.sh > output &
[4] 42624
その後、-1
つまりを使って殺しました。ため息をつく
$kill -1 42624
しかし、trap
期待どおりに動作しません。つまり、output
ファイルに内容がありませんcleaning up!
。
$cat output
starting!
どうしたの?
ベストアンサー1
これマニュアルページbash
状態
Bashがコマンドが完了するのを待ってトラップが確立されたことを知らせると、コマンドが完了するまでトラップは実行されません。
あなたの例では、trap
完了するまで実行されません。sleep 100