我有一个问题,当笔记本电脑(Mac)失去wifi连接或网络时,如何让我的程序在ssh中运行。我通过ssh远程运行python程序进入服务器,在运行代码之前,我通过输入'screen'创建了一个新屏幕。然后我运行程序并按下ctrl + A + D分离屏幕。一切都很好看,当笔记本电脑关闭时(在有WIFI的地方),程序继续工作。然而,当我带着我的笔记本电脑走了几分钟然后我重新打开笔记本电脑时,显示“写入失败:管道坏了”,程序停止了。我猜问题发生的原因是笔记本电脑丢失了网络连接。有没有办法解决这个问题,以便我可以把我的笔记本电脑带到任何地方,让我的程序运行?
答案 0 :(得分:3)
在SSH连接后打开远程服务器上的screen
,这样您就可以在那里进行持久会话,而不是在本地方框上。
如果您这样做,请注意,如果您断开连接但是再次进行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
会话后,您应该会看到日期仍然没有任何停顿。