如何在后台运行`jupyter notebook`?无需为它保留一个终端

时间:2017-11-16 13:34:06

标签: jupyter-notebook

我们经常运行jupyter notebook在浏览器中弹出一个页面以使用笔记本。但是,打开服务器的终端仍然存在。有没有办法让我们可以关闭那个终端,服务器在后面运行?

11 个答案:

答案 0 :(得分:13)

您可以使用jupyter notebook &将流程置于后台。您可以在之后关闭终端,然后该过程仍将继续运行。

答案 1 :(得分:10)

Tmux是在后台运行Jupyter Notebook的不错选择。

我在操作系统为Ubuntu 16.0的Google云平台的VM实例上运行Jupyter Notebook。哪里

  1. 我必须启动SSH终端
  2. 然后运行命令:jupyter-notebook --no-browser --port=5000。它将在该VM实例上的端口号5000上启动Jupyter Notebook
  3. 然后,我打开浏览器并输入ip_addrees_of_my_instance:port_number为5000。它将在浏览器中打开我的笔记本。

现在,一切都很好。但是请等待,如果与我的SSH终端的连接被终止,那么Jupyter Notebook将立即停止,因此,一旦ssh终端重启或从新的ssh终端重启,我必须再次重新运行它。

避免这种tmux是很好的选择。

终端多路复用器(tmux)使ssh终端关闭后,可使SSH会话在后台运行:

  1. 启动ssh终端
  2. 输入tmux。它将在同一终端中打开一个窗口。
  3. 发出命令以在此处启动Jupyter Notebook。打开笔记本。

现在,如果SSH终端已关闭/终止,它将继续在实例上运行笔记本。

如果连接终止,则:

  1. 重新连接或打开新的ssh终端。要查看此笔记本(保持在后台运行),请输入:tmux attach命令。

想要终止tmux会话:

  1. 关闭笔记本。然后在tmux-terminal-window中输入exit。 (更新:如果我们关闭笔记本电脑并使用tmux detach命令:它将从tmux会话窗口/终端退出,而不会终止/停止tmux会话)

有关更多详细信息,请参阅本文:https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/

答案 2 :(得分:2)

您可以在screentmux会话中启动笔记本计算机。轻松检查错误消息等。

答案 3 :(得分:2)

并不是很复杂,但是可以完成工作:

new

答案 4 :(得分:2)

jupyter notebook & >> disown  

使用jupyter notebook &将进程置于后台
然后输入disowndisown <the process id>
您可以立即关闭终端

答案 5 :(得分:1)

在* nix下,运行程序以避免因关闭终端而终止的最佳方法是使用 nohup (不挂断)。

nohup jupyter笔记本& nohup jupyter笔记本--no-浏览器&

nohup将init(0)作为进程的父级,因此在关闭终端时它将不会收到“挂断”信号。所有输出(标准输出和标准错误)都重定向到文件nohup.out nohup作为程序和Shell命令都存在,因此,如果您有bash,请查看bash的手册页以了解更多详细信息。

答案 6 :(得分:1)

对于远程计算机,jupyter notebook &可以正常工作。 但是,当您关闭终端时,它在本地计算机上不起作用。 对于本地计算机,请使用tmux

答案 7 :(得分:1)

从控制终端分离Jupyter进程,并将其所有输入和输出数据发送到/dev/null,这是一个特殊的设备文件,可以注销写入其中的所有数据。

jupyter notebook </dev/null &>/dev/null &

像我这样的懒人更喜欢编辑~/.bash_aliases并创建别名:

alias jnote='jupyter notebook </dev/null &>/dev/null &'

参考:https://www.tecmint.com/run-linux-command-process-in-background-detach-process/

答案 8 :(得分:0)

这在后台运行jupyter笔记本服务器时对我有用。

public static Google.Apis.Drive.v3.Data.File uploadFile(DriveService _service, string _uploadFile) { bool again = true; string[] p = _uploadFile.Split('/'); if (System.IO.File.Exists("C:/"+_uploadFile)) { Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File(); body.Name = System.IO.Path.GetFileName(p[p.Length-1]); body.Description = ""; body.MimeType = GetMimeType("C:/"+_uploadFile); body.Parents = new List<string>() { ID }; // File's content. System.IO.FileStream stream = new System.IO.FileStream("C:/" + _uploadFile, FileMode.Open); try { FilesResource.CreateMediaUpload request = _service.Files.Create(body, stream, GetMimeType("C:/" + _uploadFile)); while (again) { try { request.Upload(); again = false; } catch (Exception e) { Console.WriteLine("uploadFile: "+p[p.Length-1]); } } return body; } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); return null; } } else { Console.WriteLine("File does not exist: " + _uploadFile); return null; } }

停止nohup jupyter笔记本很简单。

首先,找到jupyter的pid:

$> nohup jupyter notebook --allow-root > error.log &

例如,输出如下:

$> ps -ef| grep juypter

然后终止进程:

root 11417 2897 2 16:00 pts/0 00:04:29 /path/to/jupyter-notebook

您还可以通过以下方式存储pid来简化此操作:

$> kill -9 11417

即,您可以通过以下方式停止笔记本电脑

$> nohup jupyter notebook --allow-root > error.log & echo $!> pid.txt


停止jupyter笔记本的另一种方法是从笔记本页面退出。

答案 9 :(得分:0)

您可以使用screen来运行它。

screen -A -m -d -S anyscreenname jupyter notebook --no-browser

这将在屏幕上启动jupyter,并且您可以使用屏幕命令来访问屏幕。

答案 10 :(得分:0)

实际上,仅靠jupyter notebook &是不够的,后端仍将登录到您的屏幕。
您需要的是从issue

中引用的内容
jupyter notebook > /path/to/somefileforlogging 2>&1 &