从远程服务器持续使用 Jupyter Notebook

Posted

技术标签:

【中文标题】从远程服务器持续使用 Jupyter Notebook【英文标题】:Persistent use of Jupyter Notebook from remote server 【发布时间】:2018-01-31 19:44:20 【问题描述】:

我使用ssh -L 连接到远程服务器,但如果我关闭笔记本电脑盖或连接丢失,jupyter notebook 将断开连接。

在我重新连接到远程服务器后,“最后一个”会话丢失了。

可以做些什么来让它持久化? screen 可以帮忙吗?

【问题讨论】:

实际上,长时间运行的笔记本会失败。我的建议是您将笔记本转换为脚本,然后按照@MichaelD 的建议使用屏幕运行它。我知道这不能回答 OP 的问题,但它会解决他们的问题 【参考方案1】:

在远程服务器上,您应该在screen 会话中打开您的 jupyter,如果您失去与服务器的连接并恢复它,它将使其持久化。

    在您的计算机上:ssh -L xxxx:localhost:yyyy serverscreenjupyter 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。请注意,重新连接到远程服务器就足够了,您不必重新打开屏幕。 我使用 tmux 来持续运行程序。 什么是xxxxyyyy。你能解释一下要分配的端口吗?` 基本上,您应该在本地机器 (xxxx) 和远程机器 (yyyy) 上使用未使用的端口。例如,xxxx 可以是8888yyyy 也可以是8888【参考方案2】:

持久化 Jupyter 服务器会话的标准用法是使用 nohup&;在您的远程服务器中,IP 地址为xx.xx.xx.xx:

nohup jupyter notebook --no-browser --ip xx.xx.xx.xx --port yyyy &

现在,即使您关闭笔记本电脑或断开连接,您也可以通过将浏览器指向 xx.xx.xx.xx:yyyy 来重新连接

【讨论】:

如何选择xx.xx.xx.xx @MichaelD 这应该是您的服务器机器的 IP 地址 我试过了,它对我不起作用。 (我在本地机器上运行nohup ... 这对我不起作用。也许是因为服务器,在本地网络中...(从 10.xx 开始) @MichaelD 应该不是问题——我的也是在本地网络中(以 192.xx.. 开头);你有没有在服务器中使用ifconfig 来获取它的IP?【参考方案3】:

添加到@BiBi 的答案...

我建议您查看tmux,而不是screen。特别是,如果您将 tmux 与 Tmux Plugin Manager 结合并安装 Tmux Resurrect,即使在远程服务器重新启动后,您也可以返回到之前的 Tmux 会话。

tmux 的快捷方式与屏幕的快捷方式有些相同,只是 control + acontrol + b 取代。当然,tmux 允许您配置自定义快捷方式。

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于从远程服务器持续使用 Jupyter Notebook的主要内容,如果未能解决你的问题,请参考以下文章

Linux Ubuntu下Jupyter Notebook的安装

Jupyter Notebook 连接到远程配置单元

Spark:如何从其他用户以“yarn_client”模式远程启动 Jupyter

ssh远程登录Jupyter notebook(七月GPU服务器)

远程访问 WSL2 Jupyter notebook

如何通过ssh在服务器上启动jupyter笔记本并在本地浏览器上运行?