Google Colab运行bash脚本时,关闭Chrome标签或电脑后如何维持运行?
嘿,刚用Colab的时候我也被这个问题坑过!长时间跑的脚本一关浏览器就中断,太闹心了。给你几个实用的解决办法,从免费方案到进阶玩法都有:
方法一:用nohup后台运行(免费用户首选)
别直接跑!sh my_script.sh,改成下面的命令:
!nohup sh my_script.sh > /content/drive/MyDrive/your_project/output.log 2>&1 &
这里几个参数的作用:
nohup能让进程忽略挂断信号,就算当前Colab会话断开,只要运行时还没被回收,脚本会继续跑> ...output.log 2>&1把脚本的所有输出(包括错误信息)都存到你Drive里的日志文件里,这样就算运行时没了,结果也能在Drive找到&让脚本在后台运行,你还能继续在Notebook里做别的
之后你可以用!tail -f /content/drive/MyDrive/your_project/output.log实时看进度,关了标签页也没关系,几个小时后回来直接看这个日志文件就行。
⚠️ 注意:免费Colab的运行时最多持续12小时,而且如果资源紧张可能会提前被回收,所以这个方法适合12小时以内的任务。
方法二:升级Colab Pro/Pro+(稳定省心)
如果你的任务经常超过12小时,或者需要更稳定的运行环境,花点钱升级到Colab Pro/Pro+绝对值得:
- Pro版最长能连续跑24小时,Pro+甚至能到48小时
- 优先分配GPU/CPU资源,不容易被系统回收
- 支持「永久会话」,关闭浏览器后运行时会继续保持,回来直接就能接上次的进度
升级后正常运行脚本就行,完全不用操心关标签的问题。
方法三:用tmux保持会话(进阶玩家选项)
如果你熟悉Linux终端操作,可以用tmux创建一个持久化的会话,这样就算Colab临时断开,重新连接后还能回到脚本运行的状态:
# 先安装tmux !apt-get install tmux -y # 创建一个名为my_task的会话 !tmux new -s my_task
之后在tmux窗口里输入sh my_script.sh开始运行,按Ctrl+B然后松开按D就能脱离会话。等你回来后,用!tmux attach -t my_task就能重新回到之前的会话,查看脚本的运行状态。
不过这个方法对新手有点门槛,而且免费运行时的12小时限制还是存在。
最后再强调一遍:一定要把结果文件存到Google Drive里,别存到Colab的临时目录/content下,不然运行时回收后文件就没了!
内容的提问来源于stack exchange,提问作者duongkstn
相关产品推荐
相关产品推荐

