Существует ли определенное поведение текущей программы, которая выполняется при завершении работы нашего ssh?

Существует ли определенное поведение текущей программы, которая выполняется при завершении работы нашего ssh?

Я думаю, что в прошлом, скажем, если я запускал сервер Ruby on Rails (используя rails s) на Bash, к которому я подключался по ssh, и подключение к Интернету прерывалось, то

  1. Сервер Ruby on Rails остановится
  2. Сервер Ruby on Rails на самом деле продолжал работать (думаю, это было из-за отключения VPN), и мне пришлось выполнить команду , ps uxа затем завершить все связанные процессы один за другим... это было немного запутанно.

Может ли произойти (1) или (2)? Есть ли четко определенное поведение? Например, если это не VPN, а ssh отключился, то (1), а если это VPN, то либо (1), либо (2)?

P.S. Я перешел на использование, tmuxесли мне нужно запустить на нем сервер Rails, так что я могу просто вернуться и tmux a -t fooснова подключиться к нему, и нажать CTRL-C, если мне это нужно.

решение1

Да, процессы, связанные с оболочкой, получают сигнал hup. Они могут игнорировать, если запрограммированы таким образом. Смотрите man для nohup.

например, nohup commandдля запуска команды, чтобы она не получила hup. Но также перенаправляет stdin, stdout, stderr.

См. также disownи&

полностью отключитьnohup > /dev/null command & disown

Связанный контент