Даже если это не прямой ответ на ваш вопрос, он тесно связан с вашей проблемой. Вместо того, чтобы пытаться поддерживать соединение живым (все соединения в конечном итоге умирают), вы можете использовать терминальные мультиплексоры, такие как 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
.