我们经常运行jupyter notebook
在浏览器中弹出一个页面以使用笔记本。但是,打开服务器的终端仍然存在。有没有办法让我们可以关闭那个终端,服务器在后面运行?
答案 0 :(得分:13)
您可以使用jupyter notebook &
将流程置于后台。您可以在之后关闭终端,然后该过程仍将继续运行。
答案 1 :(得分:10)
我在操作系统为Ubuntu 16.0的Google云平台的VM实例上运行Jupyter Notebook。哪里
jupyter-notebook --no-browser --port=5000
。它将在该VM实例上的端口号5000上启动Jupyter Notebook 现在,一切都很好。但是请等待,如果与我的SSH终端的连接被终止,那么Jupyter Notebook将立即停止,因此,一旦ssh终端重启或从新的ssh终端重启,我必须再次重新运行它。
避免这种tmux
是很好的选择。
tmux
)使ssh终端关闭后,可使SSH会话在后台运行:tmux
。它将在同一终端中打开一个窗口。 现在,如果SSH终端已关闭/终止,它将继续在实例上运行笔记本。
如果连接终止,则:
tmux attach
命令。 想要终止tmux会话:
exit
。
(更新:如果我们关闭笔记本电脑并使用tmux detach
命令:它将从tmux会话窗口/终端退出,而不会终止/停止tmux会话)有关更多详细信息,请参阅本文:https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/
答案 2 :(得分:2)
您可以在screen
或tmux
会话中启动笔记本计算机。轻松检查错误消息等。
答案 3 :(得分:2)
并不是很复杂,但是可以完成工作:
new
答案 4 :(得分:2)
jupyter notebook & >> disown
使用jupyter notebook &
将进程置于后台
然后输入disown
或disown <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 &