SSH가 종료될 때 실행 중인 현재 프로그램의 정의된 동작이 있습니까?

SSH가 종료될 때 실행 중인 현재 프로그램의 정의된 동작이 있습니까?

과거에 rails sSSH로 연결한 Bash에서 (를 사용하여) Ruby on Rails 서버를 실행했는데 인터넷 연결이 중단된 경우라고 생각합니다.

  1. Ruby on Rails 서버가 중지됩니다.
  2. Ruby on Rails 서버는 실제로 계속 실행 중이었고(VPN 연결이 끊어졌기 때문인 것 같습니다) ps ux관련 프로세스를 하나씩 종료해야 했습니다... 조금 지저분했습니다.

(1) 또는 (2)가 발생할 수 있습니까? 잘 정의된 동작이 있나요? 예를 들어, VPN이 아니지만 ssh 연결이 끊긴 경우 (1)이 되고, VPN인 경우 (1) 또는 (2) 중 하나가 됩니다.

추신: Rails 서버를 실행해야 하는 경우 사용하도록 전환했습니다 tmux. 그러면 다시 돌아와서 tmux a -t foo연결할 수 있고 필요한 경우 CTRL-C를 누를 수 있습니다.

답변1

예, 쉘과 관련된 프로세스는 신호를 수신합니다. 그런 식으로 프로그래밍하면 무시할 수 있습니다. 에 대해서는 남자를 참조하세요 nohup.

예를 들어 nohup command명령을 실행하면 hup이 발생하지 않습니다. 그러나 stdin, stdout, stderr도 리디렉션되었습니다.

또한 참조하십시오 disown.&

완전히 연결을 끊으려면nohup > /dev/null command & disown

관련 정보