Если ssh внезапно закрывается, как сохранить результаты работы на удалённом хосте?

159
16 марта 2019, 22:20

Иногда открытая сессия SSH может внезапно закрыться (broken pipe), например при работе через GPRS/wi-fi с плохим качеством сигнала.

Если в момент разрыва на удалённом хосте что-то происходило (копирование большого списка файлов, сборка ПО из исходных кодов, или был открыт текстовый редактор), то результаты работы этого "чего-то" в большинстве случаев теряются. Это очень раздражает, как этого избежать?

Answer 1

То, что Вам нужно, называется консольный мультиплексор. Идея в том, чтобы на удалённом хосте запустить процесс, который будет как бы "сохранять состояние консоли", независимо от того, есть ли в данный момент активная сессия (ssh или физического доступа к хосту "через клавиатуру и монитор") работы с этой консолью.

Сценарий действий будет таков:

  1. коннектимся к удалённому хосту по ssh
  2. запускаем терминальный мультиплексор
  3. начинаем работать
  4. соединение рвётся
  5. восстанавливаем соединение
  6. восстанавливаем сеанс работы с терминальным мультиплексором
  7. продолжаем работать с того же самого места, где остановились, ничего не потеряв

Это удобно также для того, чтобы продолжить работу с другого комьютера, или передать работу над текущей консольной задачей коллеге.

Самые популярные консольные мультиплексоры - screen (прост в освоении, минимальный функционал) и tmux (несколько более сложен, но намного более функционален - например, позволяет в рамках одной сессии tmux открыть сразу несколько экземпляров терминала и выводить их в консоль одновременно, разделив экран на несколько произвольных областей).

Изучение ключей командной строки для команд screen и tmux оставлю на совести читателя.

Answer 2

Установите screen

sudo apt-get install screen

Сразу после подключения к ssh создайте новую сессию

screen

после рекконекта к ней можно подключиться вызовом

screen -r

Команда "два в одном" - подключение к существующей сессии или создание новой, если существующей нет:

screen -D -r
Answer 3

mosh + (по желанию) tmux или screen

READ ALSO
WHERE sotrudnik = php mysql

WHERE sotrudnik = php mysql

Подскажите пожалуйста, есть php запрос mysqlУ нас есть 2 записи в одной есть заполненность sotrudnik (38), во второй нет

199
WHERE id =1,2 mysql php

WHERE id =1,2 mysql php

Как вывести несколько условий WHERE id=1,2,3,4

164
Дозаписать значение в поле таблицы mysql

Дозаписать значение в поле таблицы mysql

Подскажите пожалуйста, как можно дозаписать значение в поле таблицы mysql phpДанная команда перезаписывает значение:

184
Не работает условие WHERE mysql php [закрыт]

Не работает условие WHERE mysql php [закрыт]

Подскажите пожалуйста, не работает вот такое условие:

130