lie*_*ahu 4 ssh gnu-screen server
当笔记本电脑(Mac)失去 wifi 连接或网络时,我有一个问题如何让我的程序在 ssh 中运行。我通过 ssh 远程运行 python 程序到服务器,在我运行代码之前,我通过输入“屏幕”创建了一个新屏幕。然后我运行程序并按下 ctrl+A+D 来分离屏幕。一切看起来都很好,当笔记本电脑关闭时程序继续工作(在有 WIFI 的地方)。但是,当我带着笔记本电脑走到外面几分钟并重新打开笔记本电脑时,它显示“写入失败:管道损坏”并且程序停止了。我猜问题是因为笔记本电脑失去了网络连接。有没有办法解决这个问题,这样我就可以把我的笔记本电脑带到任何地方并保持我的程序运行?
screenSSH 连接后打开远程服务器上的 ,这样您就可以在那里而不是本地机器上进行持久会话。
如果您这样做了,请注意,如果您断开连接,您仍然会断开连接,但随后再次通过 SSH 连接并重新打开screen会话以恢复工作。
local$ ssh remote.server
remote$ screen -ls # list screens
remote$ screen -dr <screen name> # force reconnect to screen session
Run Code Online (Sandbox Code Playgroud)
编辑:
使用后,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
Run Code Online (Sandbox Code Playgroud)
重新连接到screen会话后,您应该会看到日期仍在继续而没有任何停顿。