シャットダウンで端末を閉じた後でもコマンドが実行され続けるのはなぜですか?

シャットダウンで端末を閉じた後でもコマンドが実行され続けるのはなぜですか?

command & exit端末で実行するとき(なぜvimiv & exitビミフ端末が閉じても引き続き実行しますか?私は期待ビミフ現在の端末でバックグラウンドジョブから開始して受信ため息をつくターミナルが閉じて出るとき。たとえば、vimiv &別のexitコマンドを実行するとビミフ閉鎖される

答え1

vimivが現在の端末でバックグラウンドジョブとして起動し、端末が閉じて終了したときにため息をつくようにしたいと思います。

いいえ、そうではありません。シグナルの場合(カーネルから)シグナルのみが受信されますvimivSIGHUP展望仕事であれ、それとも停止背景作業。しかし、両方ではありません。実行中のバックグラウンドジョブ。

あるいは、bash(通常はシェルではなく特にbash)自体がシグナルを受け取り、拒否されていないすべてのジョブにSIGHUP再送信する場合です。しかし、あなたの例では、シェルは[1]によってシグナルをexit受け取ったため、正常に終了しません。SIGHUP

たとえば、vimiv &他のexitコマンドを実行した後にvimiv閉じると

vimiv &これはこのプログラムに少し珍しいかもしれません。端末に別の行を入力して入力すると、xclock &プログラムは終了しません。ただし、ボタンで端末を閉じると終了します。これは信号が受信されて再送信されるためです。exitxclockXbashSIGHUPxclock

[1] bashは正常に終了したときにaを送信することもできますが、これはデフォルトではなくSIGHUP使用することができます。shopt -s huponexit

関連情報