【问题标题】:cannot quit jupyter notebook server running无法退出正在运行的 jupyter notebook 服务器
【发布时间】: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。

【问题讨论】:

标签: python server jupyter jupyter-notebook


【解决方案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】:

    这可能会有所帮助:

    1. 运行jupyter notebook list 获取jupyter 使用的端口号。
    2. 运行lsof -n -i4TCP:[port-number] 获取PID。 PID 是输出中的第二个字段。
    3. 运行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
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-21
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          • 2018-06-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多