Даже если это не прямой ответ на ваш вопрос, это в значительной степени связано с проблемой, которая у вас есть. Вместо того, чтобы пытаться сохранить соединение (все соединения в конечном итоге умирают), вы можете использовать терминальные мультиплексоры, такие как screen
и tmux
, которые поддерживают сеанс работы в фоновом режиме, даже если ваш терминал отключается.
По сути, когда вы входите на SSH сервер, вы немедленно запускаете screen
, который создает и прикрепляет новый сеанс:
$ screen
Затем вы выполняете свою работу с оболочкой, как вы обычно делаете. Теперь, если соединение обрывается, когда вы можете вернуться в режим онлайн и переподключиться к серверу по SSH, вы получите список текущих сеансов:
$ screen -ls
Для повторного подключения к сеансу:
$ screen -r <session>
где <session>
- это PID или имя сеанса. Вы будете повторно подключены к вашей сессии, и вы можете продолжить с того места, на котором вы остановились!
Вы даже можете отсоединить сессию и переподключиться из дома, чтобы забрать ее с той точки, на которой вы остановились. Чтобы отсоединить сессию, вы используете C-a
, а затем C-d
(т.е. Control + A
, а затем Control + D
).
Также существует простое онлайн-учебное пособие .
Использование screen
и tmux
на удаленных серверах считается лучшей практикой и очень рекомендуемой. Некоторые люди заходят так далеко, что используют screen
в качестве оболочки для входа по умолчанию, поэтому при подключении они сразу же начинают новый сеанс screen
.