Когда ваша сессия SSH заканчивается, ваша оболочка получит SIGHUP. (сигнал зависания). Вы должны убедиться, что он отправляет это всем процессам, запущенным с него. Для bash попробуйте shopt -s huponexit; your_command
. Это может не сработать, потому что на странице руководства написано, что huponexit работает только для интерактивных оболочек.
Я помню, что сталкивался с этим, когда пользователи выполняли задания в моем кластере, и нужно ли им использовать nohup или нет (чтобы получить поведение, противоположное тому, что вы хотите), но я не могу найти ничего на странице справки bash о том, дочерние процессы игнорируют SIGHUP по умолчанию. Надеюсь, huponexit сделает свое дело. (Думаю, вы могли бы поместить этот объект в ваш .bashrc вместо командной строки.)
Ваш ssh -t
должен работать, так как, когда соединение закрывается, чтение из терминала получит EOF или ошибку, и это заставит большинство программ завершиться.