Ubuntu环境下Screen中运行的Jupyter Lab:如何实现关闭浏览器后脚本持续执行
让Jupyter Lab脚本在关闭浏览器后持续运行的方案
嘿,我刚好碰到过类似的需求!其实默认情况下,Jupyter Lab的内核在你关掉浏览器后应该是会继续跑脚本的——你能看到之前的输出保留,其实也说明内核没完全挂掉。不过如果你的脚本经常在关闭浏览器后停掉,或者你想彻底确保它能通宵跑,这里有几个靠谱的办法:
1. 改掉Jupyter的内核闲置超时设置
Jupyter默认有个“闲置超时”的机制:如果长时间没浏览器连接,它会自动关掉内核来节省资源。你可以直接禁用这个功能,或者把超时时间拉得很长:
- 先生成配置文件(如果还没弄过的话):
jupyter lab --generate-config - 找到生成的
~/.jupyter/jupyter_lab_config.py文件,打开后找这几个参数修改:
改完保存,下次启动Jupyter就生效了,就算几天不打开浏览器,内核也会老老实实地跑脚本。# 直接禁用闲置超时——内核永远不会因为没人连就关掉 c.MappingKernelManager.cull_idle_timeout = 0 # 要是不想完全禁用,也可以设个超长时间,比如7200秒(2小时) # c.MappingKernelManager.cull_idle_timeout = 7200 # 这个是检查闲置的间隔,设60秒就行 c.MappingKernelManager.cull_interval = 60
2. 用nohup给Screen再加一层保障
你已经在用Screen了,不过可以结合nohup来启动Jupyter,这样就算Screen会话意外断了(比如服务器抽风、网络波动),Jupyter进程也不会跟着挂掉:
把启动命令改成这样:
nohup jupyter-lab --ip=my_ip --port=7778 --no-browser script.ipynb > jupyter.log 2>&1 &这个命令会把Jupyter的所有输出写到
jupyter.log文件里,还能让进程彻底脱离当前终端的控制——就算你关了Screen,它也会继续跑。想看实时输出的话,用tail -f jupyter.log就行。要是你已经在Screen里启动了Jupyter,也能补救:
- 先按
Ctrl+Z把Jupyter暂停 - 输入
bg让它在后台接着跑 - 再输入
disown -h,这样就算关了Screen,这个进程也不会被终止
- 先按
3. 单元格里跑脚本的小技巧(可选)
如果你是在Jupyter的单元格里直接运行script.ipynb,可以用魔法命令加后台运行的方式,让它和浏览器连接更独立:
%run script.ipynb &
不过这个方法更适合短脚本,长期跑的话还是前面两个系统级的方案更靠谱。
4. 怎么确认脚本真的在跑?
在服务器上用这两个命令就能查:
- 看Jupyter进程:
ps aux | grep jupyter-lab - 看脚本对应的Python进程:
ps aux | grep script.ipynb
只要进程存在,就说明脚本在正常运行。
总的来说,最稳妥的组合就是禁用Jupyter内核闲置超时 + 用nohup启动Jupyter,双保险,就算你关浏览器过夜,脚本也能稳稳跑完。
内容的提问来源于stack exchange,提问作者LizzAlice
相关产品推荐
相关产品推荐

