更新:trap SIG を削除する必要があります 一部のシェルはそれを含めることをサポートしていますが、条件付きのプレフィックス。以下のコメントを参照してください。
 アンパサンド "&" は、新しいプロセスでバックグラウンドでコマンドを実行します。その親プロセス (あなたのケースでは bash スクリプトを実行するコマンド) が終了すると、このバックグラウンド プロセスはその親プロセスを init にリセットします (PID のプロセス) 1) でも死なない。 ctrl+c を押すと 、フォアグラウンド プロセスに割り込み信号を送信していますが、バックグラウンド プロセスには影響しません。
 バックグラウンド プロセスを強制終了するには、kill を使用する必要があります。 PID を使用したコマンド $! で取得できる最新のバックグラウンド プロセスの .
 ctrl+c を使用する場合 スクリプトとバックグラウンド プロセスの両方を強制終了するには、次のようにします。
trap 'kill $BGPID; exit' INT
sleep 1024 &    # background command
BGPID=$!
sleep 1024      # foreground command of the script
 trap SIGINT のトラップ ハンドラを変更します (trap SIG を削除する必要があります 接頭辞ですが、一部のシェルはそれを含めることをサポートしている場合があります) したがって、スクリプトは $BGPID でプロセスを強制終了します