[英]cannot quit jupyter notebook server running
我正在为一个项目使用 Jupyter Notebook。 因为我在工作时将 ssh 变成了 linux 集群,所以我使用
ssh -Y -L 8000:localhost:8888 user@host
然后我用jupyter notebook --no-browser &
启动笔记本,这样我就可以继续使用终端了。 然后在我的本地机器上打开localhost:8000
和 go 关于我的工作。
我的问题是我多次忘记通过将进程置于前台并使用Ctrl-C
将其终止来关闭服务器。 相反,我只是退出了 ssh session。现在,当我运行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。
所以我找到了一个解决方案。
由于jupyter notebook list
告诉您笔记本服务器在哪些端口上运行,因此我使用netstat -tulpn
查找 PID 我从http://www.cyberciti.biz/faq/what-process-has-open-linux-获得信息 端口/
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 服务器进程之前,请小心保存在 notebook 中所做的所有更改。
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
iii) 使用找到的 PID 杀死 jupyter notebook 进程
taskkill /PID found_PID /F
例如)
taskkill /PID 24140 /F
仅供参考,Jupyter notebook 5.1 版支持如下停止命令:
jupyter notebook stop 8888
使用以下命令停止在端口 8888 上运行的 Jupyter notebook:
fuser -k 8888/tcp
这可能有帮助:
jupyter notebook list
以获取 jupyter 使用的端口号。lsof -n -i4TCP:[port-number]
以获取 PID。 PID 是输出中的第二个字段。kill -9 [PID]
来终止这个进程。我遇到了同样的问题并遵循了上面发布的解决方案。 只是想稍微澄清一下解决方案。
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
将关闭端口
第 3.3 节应适用于此。 http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html
打开笔记本时,其“计算引擎”(称为内核)会自动启动。 关闭笔记本浏览器选项卡不会关闭内核,而是内核将继续运行,直到被明确关闭。
要关闭内核,请转到关联的笔记本并单击菜单 File -> Close and Halt。 或者,Notebook Dashboard 有一个名为 Running 的选项卡,显示所有正在运行的 notebook(即内核)并允许关闭它们(通过单击 Shutdown 按钮)。
根据@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 list
,在我的例子中返回:http://localhost:8889/?token=77d01d687da830b74eba946060660d :: /gpfs/blah/
http://localhost:8889/?token=1243162854ee3648e3154b26643794 :: /ifs/hello/world/
netstat -tulpn | grep "8888"
netstat -tulpn | grep "8888"
,在我的例子中返回:tcp 7 0 127.0.0.1:8888 0.0.0.0:* LISTEN 17602/python3.9
我在最后一列中找到了 PID: 17602
。
kill -9 17602
,释放端口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.