无法退出正在运行的 jupyter notebook 服务器

Posted

技术标签:

【中文标题】无法退出正在运行的 jupyter notebook 服务器【英文标题】:cannot quit jupyter notebook server running 【发布时间】:2016-11-25 11:39:00 【问题描述】:

我正在为一个项目使用 Jupyter Notebook。由于我在工作中使用 ssh 进入 linux 集群

ssh -Y -L 8000:localhost:8888 user@host

然后我用jupyter notebook --no-browser & 启动笔记本,这样我就可以继续使用终端了。然后在我的本地机器上打开localhost:8000 并开始我的工作。

我的问题是我多次忘记通过将进程置于前台并使用Ctrl-C 杀死它来关闭服务器。相反,我刚刚退出了 ssh 会话。现在,当我运行 jupyter notebook list 时,我得到了

Currently running servers:
http://localhost:8934/ :: /export/home/jbalsells
http://localhost:8870/ :: /export/home/jbalsells
http://localhost:8892/ :: /export/home/jbalsells
http://localhost:8891/ :: /export/home/jbalsells
http://localhost:8890/ :: /export/home/jbalsells
http://localhost:8889/ :: /export/home/jbalsells
http://localhost:8888/ :: /export/home/jbalsells

我显然不希望所有这些服务器都在我工作的机器上运行,但我不知道如何关闭它们!

当我运行 ps 时,我什么也得不到:

  PID TTY          TIME CMD
12678 pts/13   00:00:00 bash
22584 pts/13   00:00:00 ps

我安装了 Jupyter 4.1.0。

【问题讨论】:

这能回答你的问题吗? How to close IPython Notebook properly? 【参考方案1】:

第 3.3 节应适用于此。 http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html

当打开笔记本时,它的“计算引擎”(称为内核)会自动启动。关闭笔记本浏览器选项卡不会关闭内核,而是内核将继续运行,直到被明确关闭。

要关闭内核,请转到相关笔记本并单击菜单文件 -> 关闭并停止。或者,笔记本仪表板有一个名为 Running 的选项卡,显示所有正在运行的笔记本(即内核)并允许关闭它们(通过单击关闭按钮)。

【讨论】:

我不是要关闭笔记本,而是关闭服务器(称为 Jupyter Notebook App) @Joalito 抱歉我误会了。【参考方案2】:

所以我找到了解决办法。

由于jupyter notebook list 告诉您笔记本服务器在哪些端口上运行,我使用netstat -tulpn 查找PID,我从http://www.cyberciti.biz/faq/what-process-has-open-linux-port/ 获得了信息

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
PID/Program name    
tcp        0      0 0.0.0.0:8649            0.0.0.0:*               LISTEN      
-                   
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      
-                   
tcp        0      0 0.0.0.0:33483           0.0.0.0:*               LISTEN      
-                   
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      
39125/Xvnc          

不费吹灰之力,我就能从jupyter notebook list 中找到我知道要寻找的端口以及运行它们的进程(如果很难找到它们,可以使用grep)。然后我杀了他们 kill 8337(或任何相关的号码)。

【讨论】:

对 windows 的建议? :) 在最近的更新中,“jupyter notebook stop 8888”似乎可以阻止笔记本在端口 8888 上运行。【参考方案3】:

我遇到了同样的问题,并按照上面发布的解决方案进行操作。只是想稍微澄清一下解决方案。

netstat -tulpn

将列出所有活动的连接。

tcp    0   0 0.0.0.0:8888  0.0.0.0:*  LISTEN      19524/python

在这种情况下,您将需要 PID“19524”。您甚至可以使用以下命令获取您尝试关闭的端口的 PID

fuser 8888/tcp

这也会给你 19524。

kill 19524

将关闭端口

【讨论】:

你的方法更干净,更有帮助。【参考方案4】:

命令提示符上的 Windows 系统命令

在终止 jupyter 笔记本服务器进程之前,请小心保存在笔记本中所做的所有更改。

i) 查找 jupyter notebook 服务器使用的端口号

jupyter notebook list

例如)

jupyter notebook list
Currently running servers:
http://127.0.0.1:8888/ :: D:\kimkk\Documents\JupyterNotebook

ii) 查找使用找到的 jupyter notebook 端口号的进程 ID

netstat -ano | find "found portnumber"

例如)

netstat -ano | find "8888"

  TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING       24140
  TCP    127.0.0.1:8888         127.0.0.1:55588        ESTABLISHED     24140
  TCP    127.0.0.1:8888         127.0.0.1:55612        ESTABLISHED     24140
  TCP    127.0.0.1:55588        127.0.0.1:8888         ESTABLISHED     6492
  TCP    127.0.0.1:55612        127.0.0.1:8888         ESTABLISHED     6492
查找第二列值等于“8888”的行。在上面的示例中,第一、第二和第三行是目标行。在这些行中,您可以在最后一列中找到 PID(例如 24140)。

iii) 用找到的 PID 杀死 jupyter notebook 进程

taskkill /PID found_PID /F

例如)

taskkill /PID 24140 /F
/F 表示强制终止进程。

仅供参考,5.1 版的 Jupyter notebook 支持如下停止命令:

jupyter notebook stop 8888

参考https://github.com/jupyter/notebook/issues/1950

【讨论】:

【参考方案5】:

这可能会有所帮助:

    运行jupyter notebook list 获取jupyter 使用的端口号。 运行lsof -n -i4TCP:[port-number] 获取PID。 PID 是输出中的第二个字段。 运行kill -9 [PID] 杀死这个进程。

【讨论】:

【参考方案6】:

使用以下命令停止在端口 8888 上运行的 Jupyter notebook:

fuser -k 8888/tcp 

【讨论】:

【参考方案7】:

在您的笔记本上,欢迎页面名为“文件”,您可以在其旁边看到“正在运行”。您可以在此处关闭并查看正在运行的笔记本

【讨论】:

这不能回答问题...请参阅上一个答案的评论。 哦,我的错,我误会了【参考方案8】:

根据@Joalito 和@Hongsoog 给出的答案,这是一个 bash 脚本,它将一次性杀死所有活动的 Jupyter 笔记本服务器:

#!/bin/bash
jupyter notebook list | 
  while IFS= read -r line
  do
    port=`echo "$line" | grep -o -P '(?<=localhost:).*(?=/ :)'`
    echo "killing jn in port $port"
    if [ -z "$port" ]
    then
      netstat -tulpn | grep "$port" | grep -o -P '(?<=LISTEN      ).*(?=/py)' | xargs kill -15
    fi
  done

【讨论】:

以上是关于无法退出正在运行的 jupyter notebook 服务器的主要内容,如果未能解决你的问题,请参考以下文章

远程jupyter+pycharm配置之jupyter notebook切换虚拟环境

如何让Jupyter Notebook支持虚拟运行环境?

pip 安装了 google.colab,现在无法在 Jupyter 笔记本上运行代码

数据清洗之 重复值处理

Q2。无法在 Google Colab 上为 Jupyter 安装/激活 jupyter_http_over_ws

怎样结束jupyter?