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

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

過去にrails sSSH経由で(使用して)アクセスしたBashでRuby on Railsサーバーを実行していましたが、インターネット接続が失われた場合、

  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信号を受け取ります。このようにプログラムすることで無視できます。人を見るためにnohup

たとえば、nohup commandコマンドを実行すると hup は発生しません。そしてstdin、stdout、stderrリダイレクトがあります。

以下も参照してくださいdisown&

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

関連情報