无法退出正在运行的 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切换虚拟环境
pip 安装了 google.colab,现在无法在 Jupyter 笔记本上运行代码