Никакой локальный инструмент не может сделать это из-за того, что сервер "видит":
- если вы корректно отключите SSH, сервер немедленно это заметит;
- если вы просто исчезаете (например, путем аппаратного сброса), соединение будет оставаться открытым на стороне сервера до некоторого времени ожидания (сравните параметры
ClientAlive* , концепцию TCP keepalive - см. этот ответ для некоторых деталей).
Даже если вы намеревались использовать tmux-resurrect или другой инструмент на локальной стороне, сервер не знает, ему все равно. Это прервет ваш долго работающий код, если вы не использовали nohup или лучше ...
Если вы можете, используйте tmux (или screen) на сервере:
- Не входите в сеанс
tmux на клиенте.
ssh к серверу.
- Запустите сеанс
tmux на сервере.
- Запустите долгосрочный код там.
- Разъединить как угодно: изящно или нет, с отсоединением
tmux или без него.
ssh снова.
- Ваша сессия
tmux все еще там (если что-то плохое не случилось с сервером за это время); соедините с tmux a .
Я использую tmux каждый день и считаю, что это правильный путь. На моем ноутбуке сессии tmux длятся не более нескольких часов, я выключаю их каждую ночь; но у меня есть доступ к нескольким серверам, где мои сессии tmux работают месяцами. Когда я пишу это, на одном из них есть процесс watch df -h работающий буквально неделю в сеансе tmux запущенном как два месяца назад.