磁盘空间耗尽后执行jupyter notebook list出现JSONDecodeError如何解决
报错原因与解决方案
报错触发原因
该报错是Jupyter读取运行时服务信息时遇到了损坏的空JSON文件导致的:
之前系统磁盘被占满时,你的Jupyter Notebook在向运行时目录写入服务状态JSON文件的过程中写入失败,最终生成了大小为0的空JSON文件。执行jupyter notebook list时会遍历运行时目录下所有服务状态文件尝试解析JSON,空文件不符合JSON格式,就会抛出该JSON解码错误。
Jupyter运行时服务状态文件默认存储在~/.local/share/jupyter/runtime/路径下,命名格式为nbserver-<进程号>.json。
修复方法
按以下步骤操作即可解决:
- 先停止当前所有运行中的Jupyter Notebook进程,避免生成新的无效文件:
执行ps aux | grep jupyter-notebook查询进程ID,再执行kill <对应进程ID>结束进程;如果没有未保存的任务,也可以直接执行pkill jupyter-notebook批量结束相关进程。 - 清除运行时目录下的所有损坏文件:
执行命令rm -rf ~/.local/share/jupyter/runtime/*,注意不要写错路径,仅删除该目录下的所有临时文件即可。 - 重新启动Jupyter Notebook,此时再执行
jupyter notebook list即可正常返回运行中的服务信息和token。
其他用户操作影响你账号的原因
虽然每个用户的家目录是独立的、互相没有权限访问,但Ubuntu默认会将所有普通用户的家目录都挂载在同一个磁盘分区(通常是/home分区),该分区的存储空间是所有用户共享的。
其他用户在自己家目录写入大量文件占满了整个/home分区的剩余空间,导致你自己的家目录也没有可用空间写入任何数据,你的Jupyter Notebook写入内核临时文件、服务状态文件都会失败,才会出现内核死亡、生成空配置文件的问题。
内容的提问来源于stack exchange,提问作者user3476463
相关产品推荐
相关产品推荐

