У меня проблема, как заставить мою программу работать в ssh, когда ноутбук (Mac) теряет Wi-Fi-соединение или сеть. Я запускал программу Python удаленно по ssh на сервер, и перед запуском кода я сделал новый экран, введя «экран». Затем я запустил программу и нажал ctrl+A+D, чтобы отсоединить экран. Все выглядело нормально, и программа продолжала работать, когда ноутбук был закрыт (в месте с WIFI). Однако, когда я вышел на улицу со своим ноутбуком на несколько минут и снова открыл ноутбук, он показал «ошибка записи: сломанная труба», и программа остановилась. Я предполагаю, что проблема возникла из-за того, что ноутбук потерял сетевое соединение. Есть ли способ решить эту проблему, чтобы я мог взять свой ноутбук куда угодно и сохранить свою программу?
держать программу в ssh работающей при потере сети
Ответы (1)
Откройте screen
на удаленном сервере после входа по SSH, чтобы у вас был постоянный сеанс там, а не на вашем локальном компьютере.
Если вы это сделали, обратите внимание, что вы все равно будете отключены, если потеряете соединение, но затем снова подключитесь по SSH и повторно откроете сеанс screen
, чтобы вернуться к работе.
local$ ssh remote.server
remote$ screen -ls # list screens
remote$ screen -dr <screen name> # force reconnect to screen session
изменить:
Используя screen
, вы получаете постоянную сессию, которую можно восстановить. Эти сеансы будут жить там, где вы их начнете. Если вы хотите убедиться, что вы продолжаете запускать что-то на удаленном сервере, то сначала SSH
, а затем запустите screen
на удаленном сервере.
Если вы потеряете соединение, будет разорвано только ваше SSH
соединение, и вы будете отключены от своего screen
сеанса, но это не прекратится. Вы можете снова войти SSH
и повторно подключиться к сеансу screen
.
Попробуй это:
local$ ssh remote.server
remote$ screen -S date
# screen starts with name 'date'. if it's the first time you start screen on
# this box it might display some welcome message where you need to press enter
remote-screen$ while true; do date; sleep 1; done
# this will show the time every second
# disconnect your network: the ssh connection will be terminated
# open console again and continue
local$ ssh remote.server
remote$ screen -dr date
После повторного подключения к сеансу screen
вы должны увидеть, что даты продолжают идти без паузы.