我使用ssh -L
连接到远程服务器,但如果我关闭笔记本盖子或连接中断,则 Jupyter 笔记本将断开连接。
重新连接到远程服务器后,“上一个”会话将丢失。
有什么方法可以使它持久化? screen
可以帮助解决这个问题吗?
我使用ssh -L
连接到远程服务器,但如果我关闭笔记本盖子或连接中断,则 Jupyter 笔记本将断开连接。
重新连接到远程服务器后,“上一个”会话将丢失。
有什么方法可以使它持久化? screen
可以帮助解决这个问题吗?
在远程服务器上,您应该在screen
会话中打开您的jupyter,这将使它在与服务器失去连接时仍然保持持久性。
ssh -L xxxx:localhost:yyyy server
。screen
。jupyter notebook --no-browser --port=yyyy
。【在远程服务器上】localhost:xxxx
。手动断开连接并重新连接:
Control + a
,然后按d
。Control + d
ssh -L xxxx:localhost:yyyy
。screen -r
。localhost:xxxx
。ssh -L xxxx:localhost:yyyy server
重新连接到远程服务器即可。如果您想访问正在运行jupyter的屏幕,则可以执行 screen -r
。请注意,重新连接到远程服务器就足够了,您不必重新打开屏幕。 - BiBixxxx
和yyyy
?你能解释一下要分配的端口吗? - maninekkalapudixxxx
)和远程机器(yyyy
)上使用未使用的端口。例如,xxxx
可以是8888
,而yyyy
也可以是8888
。 - BiBi持久化Jupyter服务器会话的标准用法是在具有IP地址xx.xx.xx.xx
的远程服务器上使用nohup
和&
:
nohup jupyter notebook --no-browser --ip xx.xx.xx.xx --port yyyy &
现在,即使您关闭笔记本电脑或失去连接,只要将浏览器指向xx.xx.xx.xx:yyyy
,您就可以始终重新连接。
xx.xx.xx.xx
? - Michael Dnohup ...
) - Michael Difconfig
命令来获取它的IP地址吗? - desertnaut在@BiBi的回答中补充一点...
我可以推荐你使用tmux,而不是screen
。特别是,如果你将tmux与Tmux Plugin Manager结合起来,并安装Tmux Resurrect, 即使远程服务器重新启动后,你也能够回到之前的Tmux会话。
tmux的快捷键与screen的相似,只是control + a
被替换为control + b
。当然,tmux允许你配置自定义快捷键。
使用nohup命令在退出shell或终端后保持jupyter运行。 在指定的位置键入以下命令。
nohup jupyter notebook --no-browser --port=8085 > my.log 2>&1 < /dev/null &
。 这将在端口8085上运行jupyter,任何stdout都将存在于my.log
中 ssh -NL 8085:localhost:8085 username@xx.xx.xx.xx
。 如果需要指定端口,可以使用ssh -NL 8085:localhost:8085 -p xxxx username@xx.xx.xx.xx
http://127.0.0.1:8085/
有时远程服务器上可能会占用端口8085,在这种情况下,请尝试使用另一个端口,但确保在进行隧道连接时使用相同的端口号。
BiBi的回答是正确的。但我遇到过这样的情况,我的ssh连接意外终止,当我尝试重新连接时,端口转发不再起作用。可能是远程机器上有一些悬挂的进程,不确定。
无论如何,在这些情况下,我使用socat在远程机器上代理两个本地端口:
# jupyter notebook/lab running in screen on port yyyy, then your connection dies...
ssh -L xxxx:localhost:zzzz
socat tcp-listen:zzzz,reuseaddr,fork tcp:localhost:yyyy
这样你就可以避免在不同端口上重新启动jupyter了