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