在远程服务器的后台运行Jupyter Notebook,获取输出

时间:2017-07-14 16:39:57

标签: ssh jupyter-notebook

我正在尝试在后台运行Jupyter Notebook。我发现this question包含了命令

jupyter notebook &> /dev/null &

在我的本地机器上工作。但是,我有两个问题:

  1. 我需要一个令牌才能在浏览器窗口中访问我的笔记本。但是,使用上面的命令,除了进程ID之外,终端窗口中没有输出,因此我无法访问我的笔记本。

  2. 我还需要在远程计算机的后台运行笔记本。我ssh进入远程计算机,然后运行jupyter notebook --no-browser。但是,一旦我关闭笔记本电脑,笔记本电脑进程就会在我的本地终端窗口以及ssh中被杀死。

  3. 我能够通过运行正常的

    粗暴地避免上述问题
    jupyter notebook --no-browser
    

    在远程服务器中,然后将ssh杀死到远程服务器。我的问题归结为以下两个子问题:

    1. 除了关闭ssh之外,有没有办法做到这一点?我想这不是真正最大的问题,但是简单地杀掉ssh而不是更优雅或更有效的解决方案似乎非常hack。

    2. 我如何在本地机器上实现同样的功能?我需要在后台运行Jupyter Notebook,同时还要以某种方式获取输出。我可以将输出定向到另一个文件或在其他地方读取吗?

2 个答案:

答案 0 :(得分:2)

  1. 为您的Jupyter笔记本电脑服务器生成密码,这样您就不需要通过令牌输入它(每次更改时都会更改)重启服务器)。

  2. 屏幕 tmux 中运行Jupyter Notebook服务器,因此每次关闭与远程服务器的连接时,只需分离来自屏幕。它将继续在您的远程服务器上运行。下次要访问它时,只需点击screen -r即可在ssh之后将屏幕附加到远程服务器。

答案 1 :(得分:0)

在不带浏览器选项的tmux上运行Jupyter笔记本。并在需要时使用浏览器。为了使正在运行的会话始终保持变量和所有变量的状态,您可以在Jupyter中使用nbconvert,使用命令:jupyter nbconvert --to notebook --execute --inplace mynotebook.ipynb在断开几次后在浏览器中打开它时,在Jupyter笔记本上获得输出。