如何正确关闭IPython笔记本?

144 人关注

How to close IPython Notebook properly?

目前,我只是关闭浏览器标签,然后在终端使用 Ctrl+C
不幸的是,无论是 exit() 还是勾选 Kill kernel upon exit 都没有帮助(它们确实杀死了内核,但没有退出iPython)。

1 个评论
Dr C
可以用 ps -ax top 查看某个特定内核(在某个特定端口打开)的PID。因此,可以用【管理权限】选择性地停止内核,以终止该特定进程。# kill PID-of-k-i 这不允许内核的内部关闭程序,但也不允许强制Ctl-C type....有谁知道jupyter是否有这样的计划?
python
jupyter-notebook
ipython
jupyter
Piotr Migdal
Piotr Migdal
发布于 2012-04-15
15 个回答
Thomas K
Thomas K
发布于 2019-06-01
已采纳
0 人赞同

目前还没有比终端中的Ctrl+C更好的方法。

我们正在考虑如何有一个明确的关机,但是在笔记本作为一个单用户的应用程序和作为一个多用户的服务器之间存在着一些矛盾,在前者中,用户可以自由地停止它,而在后者中,只有管理员才可以停止它。我们还没有完全想出如何处理这些差异。

(对于未来的读者,这是0.12版本发布和0.13版本开发中的情况)。

2017年12月更新

IPython笔记本已经成为Jupyter笔记本。最近的一个版本增加了一个 jupyter notebook stop 的shell命令,它将关闭运行在该系统上的服务器。如果不是默认的8888端口,你可以在命令行中传递端口号。

你也可以使用 nbmanager ,一个桌面应用程序,可以显示正在运行的服务器并关闭它们。

最后,我们正在努力增加。

  • A config option to automatically shut down the server if you don't use it for a specified time.
  • A button in the user interface to shut the server down. (We know it's a bit crazy that it has taken this long. Changing UI is controversial.)
  • 也许只是在配置文件和命令行中提供一个允许明确杀戮(通过菜单中的一个按钮)或不杀戮的选项?这样,那些希望服务器总是运行的人就可以设置正确的配置了。
    EFC
    已经过去几年了,这种情况有什么变化吗?Ctrl+C仍然是关闭iPython笔记本服务器的唯一可靠方法吗?
    仍然没有办法从笔记本用户界面内部关闭它,但我写道 nbmanager ,一个可以列出并杀死笔记本服务器和内核的工具。
    所以我认为使用 jupyter notebook & 是个坏主意,因为 Ctrl + C 并不适用于这种情况。
    mit
    @julianhatwell jupyter notbook stop 应该在不同的控制台中输入。
    clockworks
    clockworks
    发布于 2019-06-01
    0 人赞同

    我认为接受的答案已经过时,不再有效。

    你可以从Web界面的文件菜单项目中终止jupyter笔记本。

    当你把鼠标光标移到 "关闭和停止 "时,你会看到以下解释。

    当你点击 "关闭并停止 "时,你会在终端屏幕上看到以下信息。

    要澄清的是,这将阻止 kernel , the process which runs your Python code. It doesn't stop the notebook server ,它使笔记本的界面,处理加载和保存文件等。
    zyy
    我的界面上没有这个下拉菜单,我复制并粘贴URL到chrome浏览器。
    BBW Before Windows
    BBW Before Windows
    发布于 2019-06-01
    0 人赞同

    如果你像我一样在后台运行jupyter。

    jupyter notebook &> /dev/null &
    

    然后为了完全退出jupyter,代替Ctl-C,做一个别名命令。

    echo 'alias quitjupyter="kill $(pgrep jupyter)"' >> ~/.bashrc
    

    重新启动你的终端。关闭所有jupyter实例。

    quitjupyter
    

    注意:如上所示,在单引号中使用双引号。 另一种方法会在将表达式写入你的.bashrc之前对其进行评估(你要写的是命令本身,而不是'kill 1430'或任何可能与当前jupyter实例相关的进程号)。 当然,你可以使用任何你想要的别名。 我实际上使用 "qjup"。

    echo 'alias qjup="kill $(pgrep jupyter)"' >> ~/.bashrc
    

    重新启动你的终端。关闭所有jupyter实例。

    替换代码0】本身就很好。我正在从一个崩溃的远程终端上运行 jupyter notebook --CTRL+C的方法在重新登录后就不可能了。节省了重启远程的核选项,这很好。
    Why not just pkill jupyter ? pkill is pgreb , but for killing processes.
    美元符号的作用是什么?我从ps | grep jupyter得到一个正确的答案,但从pgrep jupyter得到一个空的响应,谁能解释一下其中的区别? GNU bash,版本3.2.57(1)-release (x86_64-apple-darwin18) macos 10.14.6
    至少在BSD/MacOS上,我需要 "pgrep -f jupyter",所以匹配会检查全部参数列表,而不仅仅是进程名称。
    moronkreacionz
    moronkreacionz
    发布于 2019-06-01
    0 人赞同

    第一步是保存所有打开的笔记本。然后再考虑关闭你正在运行的Jupyter笔记本。你可以使用这个简单的命令。

    $ jupyter notebook stop 
    Shutting down server on port 8888 ...
    

    这也需要端口号作为参数,你可以优雅地关闭jupyter笔记本。

    For eg:

    jupyter notebook stop 8889 
    Shutting down server on port 8889 ...
    

    此外,要知道你当前运行的jupyter实例,请查看以下命令。

    shell> jupyter notebook list 
    Currently running servers:
    http://localhost:8888/?token=ef12021898c435f865ec706de98632 :: /Users/username/jupyter-notebooks [/code]
        
    那是一个打字错误,谢谢你的提醒。纠正了。
    PatriceG
    PatriceG
    发布于 2019-06-01
    0 人赞同

    这些命令对我有用。

    jupyter notebook list # shows the running notebooks and their port-numbers
                          # (for instance: 8080)
    lsof -n -i4TCP:[port-number] # shows PID.
    kill -9 [PID] # kill the process.
    

    本答案改编自here.

    fixxxer
    fixxxer
    发布于 2019-06-01
    0 人赞同

    试着从任务管理器(如果是Windows)中杀死pythonw进程,如果其他方法都不起作用。

    Soham
    Soham
    发布于 2019-06-01
    0 人赞同
    Linux (Ubuntu 14.04)
    

    如前所述,尝试正确地杀死ipython笔记本进程,首先在你的ipynb/jupyter浏览器会话中进入 "运行 "标签,然后在控制台检查打开的终端,用ctrl-c关闭。如果可能的话,应该避免后者。

    如果你运行ipython notebook list并继续看到在不同的端口上运行的ipython服务器,请记下现有的笔记本被服务到哪些端口。然后关闭你的TCP端口。

    fuser -k 'port#'/tcp 
    

    我不确定这样做是否有其他风险。如果有,请告诉我。

    Andrew Medlin
    Andrew Medlin
    发布于 2019-06-01
    0 人赞同

    实际上,我相信有一个比使用杀戮或任务管理器杀死进程更干净的方法。

    在Jupyter笔记本仪表板(你第一次启动 "jupyter notebook "时看到的浏览器界面),浏览到你在浏览器中关闭的笔记本文件的位置,但其内核可能仍在运行。

    iPython笔记本文件会出现一个书的图标,如果它有一个运行中的内核,则显示为绿色,如果内核没有运行,则显示为灰色。

    只要选择正在运行的文件旁边的复选框,然后点击上面出现的关机按钮。

    这将正确关闭与该特定笔记本相关的内核。

    WY Hsu
    WY Hsu
    发布于 2019-06-01
    0 人赞同

    Environment

    我的操作系统是Ubuntu 16.04,jupyter是4.3.0。

    Method

    首先,我在浏览器的主页上注销了jupyter(注销按钮在右上方)。

    第二,在你的终端输入 Ctrl + C ,它显示。

    [I 15:59:48.407 NotebookApp]中断 从本地目录服务笔记本。 目录。/home/Username 0个活动内核

    Jupyter笔记本的运行速度是。 http://localhost:8888/?token=a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

    Shutdown this notebook server (y/[n])?

    最后一步,在5秒内输入 y ,如果显示。

    [C 15:59:50.407 NotebookApp] 确认关机。
    [I 15:59:50.408 笔记本应用程序]关闭内核

    祝贺你!你成功地关闭了你的jupyter。

    Gonçalo Peres
    Gonçalo Peres
    发布于 2019-06-01
    0 人赞同

    Option 1

    打开一个不同的控制台,运行

    jupyter notebook stop [PORT]
    

    默认的[端口]是8888,所以,假设Jupyter Notebooks运行在8888端口,只要运行

    jupyter notebook stop
    

    If it is on port 9000, then

    jupyter notebook stop 9000
    

    Option 2 (Source)

  • 检查运行时文件夹的位置

    jupyter --paths
    
  • 删除运行时文件夹中的所有文件

    rm -r [RUNTIME FOLDER PATH]/*
    
  • 使用top找到任何剩余的Jupyter Notebook运行进程,如果有的话,就杀掉它们的PID。

    top | grep jupyter &
    kill [PID]
    

    一个人可以boilt it down to

    TARGET_PORT=8888
    kill -9 $(lsof -n -i4TCP:$TARGET_PORT | cut -f 2 -d " ")
    

    Option 3

    作为最后的手段,Hary所分享的here也能起到作用

    sudo pkill -1 -f python 
    

    Note:如果一个人想在一个特定的IP/端口上启动他的笔记本

    jupyter notebook --ip=[ADD_IP] --port=[ADD_PORT] --allow-root &
        
  • user2983936
    user2983936
    发布于 2019-06-01
    0 人赞同

    现在最好的办法是使用 "退出 "按钮,它就在 "注销 "按钮的左边。我不得不承认,我不理解 "注销 "按钮的效用。然而,我很高兴他们增加了极为有用的 "退出 "按钮。

    sushmit
    sushmit
    发布于 2019-06-01
    0 人赞同

    如果你是在mac上并且使用Jupyter实验室,你可以在终端进行以下操作

    jupyter list
    

    以上会给你所有正在运行的服务器。一旦你知道了这些服务器,就可以使用jupyter lab stop。例如,如果服务器在8888上运行,只要执行

    jupyter lab stop 8888
        
    Susanna Maier
    Susanna Maier
    发布于 2019-06-01
    0 人赞同

    在浏览器会话中,你也可以进入 Kernel ,然后点击 Restart and Clear Output

    Subhrajit Bhattacharya
    Subhrajit Bhattacharya
    发布于 2019-06-01
    0 人赞同

    我是从Jupyter/IPython笔记本快速入门指南文档中复制粘贴的。 指南文档,于2018年2月13日发布。 http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html

    1.3.3 Close a notebook: kernel shut down When a notebook is opened, its “computational engine” (called the kernel) is automatically started. Closing the notebook browser tab, will not shut down the kernel, instead the kernel will keep running until is explicitly shut down. To shut down a kernel, go to the associated notebook and click on menu File -> Close and Halt. Alternatively, the Notebook Dashboard has a tab named Running that shows all the running notebooks (i.e. kernels) and allows shutting them down (by clicking on a Shutdown button).

    摘要。首先关闭并停止笔记本的运行。

    1.3.2 关闭Jupyter笔记本应用程序 关闭浏览器(或标签)并不能关闭Jupyter笔记本应用程序。要完全关闭它,你需要 关闭相关的终端。 更详细地说,Jupyter Notebook App是一个服务器,它出现在你的浏览器中,默认地址是 ( http://localhost:8888 ).关闭浏览器不会关闭服务器。你可以重新打开之前的地址 并重新显示Jupyter笔记本应用程序。 你可以运行许多Jupyter笔记本应用程序的副本,它们将显示在一个类似的地址上(只有": "后面的数字,即端口,将在每个新的地址上递增)。 ": "后面的数字,也就是端口,会在每个新副本中递增)。由于使用一个Jupyter笔记本应用程序你可以 已经可以打开很多笔记本,我们不建议运行多个Jupyter 笔记本应用程序的多个副本。