从远程服务器持续使用 Jupyter Notebook
Persistent use of Jupyter Notebook from remote server
我使用 ssh -L
连接到远程服务器,但如果我合上笔记本电脑盖或连接断开,jupyter notebook 就会断开连接。
重新连接到远程服务器后,"last" 会话丢失。
如何让它持久化?
screen
可以帮忙吗?
在远程服务器上,你应该在 screen
会话中打开你的 jupyter,如果你失去与服务器的连接并恢复它,它将使它持久化。
- 在您的计算机上:
ssh -L xxxx:localhost:yyyy server
。
screen
.
jupyter notebook --no-browser --port=yyyy
。 [在远程服务器上]
- 在您的浏览器中:
localhost:xxxx
。
要手动断开并重新连接:
- 退出画面window:
control + a
然后d
.
- 断开与服务器的连接:
control + d
- 并重新连接
ssh -L xxxx:localhost:yyyy
。
- 您可以选择重新打开屏幕 window,但没有必要,使用
screen -r
。
- 返回您的笔记本或重新打开
localhost:xxxx
。
持久化 Jupyter 服务器会话的标准用法是使用 nohup
和 &
;在您的远程服务器中,IP 地址为 xx.xx.xx.xx
:
nohup jupyter notebook --no-browser --ip xx.xx.xx.xx --port yyyy &
现在,即使您关闭笔记本电脑或断开连接,您始终可以通过将浏览器指向 xx.xx.xx.xx:yyyy
来重新连接
添加到@BiBi 的回答中...
我建议您查看 tmux. Especially, if you combine tmux with the Tmux Plugin Manager and install Tmux Resurrect 而不是 screen
,即使在您的远程服务器重新启动后,您也可以返回到之前的 Tmux 会话。
tmux 的快捷方式与 screens 的快捷方式有些相同,只是 control + a
被 control + b
代替了。当然,tmux 允许您配置自定义快捷方式。
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
我使用 ssh -L
连接到远程服务器,但如果我合上笔记本电脑盖或连接断开,jupyter notebook 就会断开连接。
重新连接到远程服务器后,"last" 会话丢失。
如何让它持久化?
screen
可以帮忙吗?
在远程服务器上,你应该在 screen
会话中打开你的 jupyter,如果你失去与服务器的连接并恢复它,它将使它持久化。
- 在您的计算机上:
ssh -L xxxx:localhost:yyyy server
。 screen
.jupyter notebook --no-browser --port=yyyy
。 [在远程服务器上]- 在您的浏览器中:
localhost:xxxx
。
要手动断开并重新连接:
- 退出画面window:
control + a
然后d
. - 断开与服务器的连接:
control + d
- 并重新连接
ssh -L xxxx:localhost:yyyy
。 - 您可以选择重新打开屏幕 window,但没有必要,使用
screen -r
。 - 返回您的笔记本或重新打开
localhost:xxxx
。
持久化 Jupyter 服务器会话的标准用法是使用 nohup
和 &
;在您的远程服务器中,IP 地址为 xx.xx.xx.xx
:
nohup jupyter notebook --no-browser --ip xx.xx.xx.xx --port yyyy &
现在,即使您关闭笔记本电脑或断开连接,您始终可以通过将浏览器指向 xx.xx.xx.xx:yyyy
添加到@BiBi 的回答中...
我建议您查看 tmux. Especially, if you combine tmux with the Tmux Plugin Manager and install Tmux Resurrect 而不是 screen
,即使在您的远程服务器重新启动后,您也可以返回到之前的 Tmux 会话。
tmux 的快捷方式与 screens 的快捷方式有些相同,只是 control + a
被 control + b
代替了。当然,tmux 允许您配置自定义快捷方式。
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