无法退出jupyter笔记本服务器运行

时间:2016-07-21 18:21:57

标签: python server jupyter jupyter-notebook

我正在使用Jupyter Notebook进行项目。因为我在工作中使用

进入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。

8 个答案:

答案 0 :(得分:20)

所以我找到了解决方案。

由于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(或与之关联的任何数字)。

答案 1 :(得分:8)

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

在杀死jupyter笔记本电脑服务器进程之前,请小心保存笔记本中的所有更改。

i)找到jupyter笔记本服务器使用的端口号

jupyter notebook list

例)

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

ii)查找使用找到的jupyter笔记本端口号的进程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笔记本进程

taskkill /PID found_PID /F

例)

taskkill /PID 24140 /F
  • / F表示强制终止该过程。

仅供参考,版本5.1的Jupyter笔记本支持停止命令,如下所示:

jupyter notebook stop 8888

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

答案 2 :(得分:5)

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

fopen(/storage/data.csv): failed to open stream: No such file or directory

将列出所有活动连接。

netstat -tulpn

在这种情况下你需要PID“19524”。您甚至可以使用以下内容来获取您尝试关闭的端口的PID

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

这也会给你19524。

fuser 8888/tcp

将关闭端口

答案 3 :(得分:3)

这可能会有所帮助:

  1. 运行jupyter notebook list以获取jupyter使用的端口号。
  2. 运行lsof -n -i4TCP:[port-number]以获取PID。 PID是输出中的第二个字段。
  3. 运行kill -9 [PID]以终止此过程。

答案 4 :(得分:1)

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

  

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

     

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

答案 5 :(得分:1)

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

fuser -k 8888/tcp 

答案 6 :(得分:1)

这是一个bash脚本,它将根据@Joalito和@Hongsoog给出的答案一次性杀死所有活动的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
}

答案 7 :(得分:0)

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