2016-08-31 4 views
0

私のスクリプトは、渡されたパラメータのそれぞれのループを実行します:シェルスクリプト:トラップのバックグラウンドに移動する過程

for ((i=1; i<=$TEST_AMOUNT; i++)) 
do 
    trap '{.... ;}' INT 
    TEST_NAME=${!i} 
    run.sh $TEST_NAME false $MULTIPLE_TESTS | tee -ai testing.out 
done 

トラップは割り込み信号をキャッチした場合、私はループ全体を移動する必要がありますバックグラウンドで実行し、nohupで実行します。私はnohup pid &のようなものを考えていた。これを行う最善の方法は何ですか?あなたがしたいように見える何

答えて

0

は本当に不可能ですが、あなたは確かに行うことができます。同じ効果を持つ

do 
    trap INT # ignore SIGINT 
    nohup run.sh $TEST_NAME false $MULTIPLE_TESTS | tee -ai testing.out & 
    wait 
done 

。 (あなたが望むものを理解していればそれは完全にはわかりません)

フォアグラウンドでプロセスを実行すると、キーボードから生成されたSIGINTは、スクリプトによってrun.shスクリプトはそれを取得して終了します。 run.shがシグナルを無視するか、シグナルを処理して終了しない場合、トラップは実行されません。つまり、いかなる場合でも、run.shが終了するまであなたの罠は実行されません。

関連する問題