ssh が終了したときに実行されている現在のプログラムの動作は定義されていますか?

ssh が終了したときに実行されている現在のプログラムの動作は定義されていますか?

過去に、例えば、rails sBashでRuby on Railsサーバーを( を使って)実行し、SSH接続した時にインターネット接続が中断されたとしたら、

  1. Ruby on Railsサーバーが停止する
  2. Ruby on Rails サーバーは実際には実行し続けていたため (VPN が切断されたためだと思います)、 を実行しps uxてから関連するプロセスを 1 つずつ終了する必要がありました... 少し面倒でした。

(1) または (2) のいずれかが発生する可能性はありますか? 明確に定義された動作はありますか? たとえば、VPN ではなく、ssh が切断された場合は (1) ですが、VPN の場合は (1) または (2) のいずれかになりますか?

tmuxPS : Rails サーバーを実行する必要がある場合は、を使用するように切り替えました。これにより、戻ってtmux a -t fooサーバーに再度アタッチし、必要に応じて CTRL-C を押すだけで済みます。

答え1

はい、シェルに関連付けられたプロセスはシグナル hup を受信します。そのようにプログラムされている場合は無視できます。man を参照してくださいnohup

たとえば、nohup commandコマンドを実行して hup が発生しないようにします。ただし、stdin、stdout、stderr もリダイレクトされます。

およびも参照してくださいdisown&

完全に切断するnohup > /dev/null command & disown

関連情報