无法退出 jupyter 笔记本服务器 运行
cannot quit jupyter notebook server running
我正在为一个项目使用 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。
3.3节应该适用于此。
http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html
When a notebook is opened, its “computational engine” (called the kernel) is automatically started. Closing the notebook browser tab, will not shut down the kernel, instead the kernel will keep running until is explicitly shut down.
To shut down a kernel, go to the associated notebook and click on menu File -> Close and Halt. Alternatively, the Notebook Dashboard has a tab named Running that shows all the running notebooks (i.e. kernels) and allows shutting them down (by clicking on a Shutdown button).
所以我找到了解决办法。
因为 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
(或关联的任何数字)。
我 运行 遇到了同样的问题,并按照上面发布的解决方案进行操作。只是想稍微澄清一下解决方案。
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
将关闭端口
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
- 查找第二列值等于“8888”的行。在上面的示例中,第一、第二和第三行是目标行。在这些行中,您可以在最后一列中找到 PID(例如 24140)。
iii) 使用找到的 PID 终止 jupyter notebook 进程
taskkill /PID found_PID /F
例)
taskkill /PID 24140 /F
- /F表示强行杀掉进程
仅供参考,Jupyter Notebook 从 5.1 版开始支持如下停止命令:
jupyter notebook stop 8888
这可能有帮助:
- 运行
jupyter notebook list
获取jupyter使用的端口号。
- 运行
lsof -n -i4TCP:[port-number]
获取 PID。
PID 是输出中的第二个字段。
- 运行
kill -9 [PID]
终止这个进程。
使用以下命令在端口 8888 上停止 Jupyter notebook 运行:
fuser -k 8888/tcp
在您的笔记本上,欢迎页面名为 "Files",您可以在其旁边看到 "Running"。您可能希望在此处关闭并查看 运行 notebooks
根据@Joalito 和@Hongsoog 给出的答案,这是一个 bash 脚本,可以一次性杀死所有活动的 Jupyter notebook 服务器:
#!/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。因为我在工作时使用 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。
3.3节应该适用于此。 http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html
When a notebook is opened, its “computational engine” (called the kernel) is automatically started. Closing the notebook browser tab, will not shut down the kernel, instead the kernel will keep running until is explicitly shut down.
To shut down a kernel, go to the associated notebook and click on menu File -> Close and Halt. Alternatively, the Notebook Dashboard has a tab named Running that shows all the running notebooks (i.e. kernels) and allows shutting them down (by clicking on a Shutdown button).
所以我找到了解决办法。
因为 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
(或关联的任何数字)。
我 运行 遇到了同样的问题,并按照上面发布的解决方案进行操作。只是想稍微澄清一下解决方案。
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
将关闭端口
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
- 查找第二列值等于“8888”的行。在上面的示例中,第一、第二和第三行是目标行。在这些行中,您可以在最后一列中找到 PID(例如 24140)。
iii) 使用找到的 PID 终止 jupyter notebook 进程
taskkill /PID found_PID /F
例)
taskkill /PID 24140 /F
- /F表示强行杀掉进程
仅供参考,Jupyter Notebook 从 5.1 版开始支持如下停止命令:
jupyter notebook stop 8888
这可能有帮助:
- 运行
jupyter notebook list
获取jupyter使用的端口号。 - 运行
lsof -n -i4TCP:[port-number]
获取 PID。 PID 是输出中的第二个字段。 - 运行
kill -9 [PID]
终止这个进程。
使用以下命令在端口 8888 上停止 Jupyter notebook 运行:
fuser -k 8888/tcp
在您的笔记本上,欢迎页面名为 "Files",您可以在其旁边看到 "Running"。您可能希望在此处关闭并查看 运行 notebooks
根据@Joalito 和@Hongsoog 给出的答案,这是一个 bash 脚本,可以一次性杀死所有活动的 Jupyter notebook 服务器:
#!/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
}