内核没关干净会导致下次打开Notebook卡在“Kernel starting…”或报Kernel died,需从三层面关闭:一、Kernel→Interrupt中断当前执行但保留状态;二、Kernel→Restart彻底重启内核并清空所有变量;三、命令行kill进程并清理kernelspec残留。

内核没关干净,下次打开 Notebook 就可能卡在“Kernel starting…”或直接报 Kernel died —— 关闭内核不是只关浏览器页面,得从三个层面动手:中断当前执行、停掉内核进程、彻底释放绑定资源。
Kernel → Interrupt 能停正在跑的代码,但不关内核进程
这是最轻量的操作,适用于某段死循环或长时间计算卡住,想立刻中止但保留变量和状态继续调试。
-
Kernel → Interrupt发送 SIGINT 信号,类似 Ctrl+C,只打断当前正在执行的 cell - 如果 cell 已结束、内核处于空闲状态,这个操作无效果,状态栏仍显示
Kernel ready - 它不会清空变量,也不会释放内存,反复
Interrupt后仍可能因累积对象导致后续崩溃
Kernel → Restart 会杀掉旧进程并启动新内核
真正意义上的“关闭再重开”,适合内核响应迟钝、输出异常、import 报错但重启后恢复的场景。
- 触发后,Jupyter 会先终止当前
python -m ipykernel进程,再拉起一个新进程 - 所有变量、模块导入、全局状态全部丢失,相当于新开一个 Python 解释器
- 注意:如果内核本身注册损坏(比如
kernel.json里路径指向已删除的 Python),Restart会失败并弹出Kernel error
命令行强制 kill 内核进程,绕过 UI 限制
当菜单灰掉、网页无响应、或内核在后台偷偷占着端口时,必须进终端干掉它。
- 先查进程:
ps aux | grep ipykernel或ps aux | grep jupyter - 找到形如
python -m ipykernel ... --ip=127.0.0.1 --port=XXXX的行,记下 PID - 执行:
kill -9 PID(Windows 用taskkill /PID PID /F) - 补充动作:运行
jupyter kernelspec list确认内核注册是否残留,必要时用jupyter kernelspec remove <name>清理
最容易被忽略的是:内核进程和 Jupyter Notebook 服务是两个东西。关掉浏览器标签页 ≠ 关掉内核,也 ≠ 关掉 jupyter notebook 服务进程。尤其在远程服务器上,Ctrl+C 两次才能真正停服务,否则端口一直被占,下次启动可能报 Address already in use。


















