如何设置让Google Cloud Shell保持连接?解决1小时自动断开问题
解决Google Cloud Shell运行Jupyter Notebook断开后内容丢失的问题
这问题我之前帮不少人解决过——Cloud Shell的默认行为确实容易坑到刚用的人,核心原因有两个:一是闲置1小时就会自动终止实例,二是除了$HOME目录外,其他存储都是临时的,重启就清空。下面给你两套解决方案,结合起来用就稳了:
一、维持Cloud Shell连接,防止实例自动终止
Cloud Shell的1小时闲置超时是硬性规则,但我们可以用终端复用工具让Jupyter在后台持续运行,即使Cloud Shell断开,重新连接后也能恢复会话:
- 使用
tmux(推荐,Cloud Shell默认自带)- 创建一个专属的tmux会话:
tmux new -s jupyter_session - 在这个会话里启动Jupyter Notebook:
jupyter notebook --ip=0.0.0.0 --port=8080 - 暂时离开会话(比如需要关闭Cloud Shell窗口):按下
Ctrl+B,然后松开按D,会话会在后台保持运行。 - 重新连接Cloud Shell后,恢复之前的会话:
tmux attach -t jupyter_session
- 创建一个专属的tmux会话:
- 辅助:防止被判定为闲置
如果怕长时间操作被判定为闲置,还可以在终端里运行一个简单的定时命令,每隔5分钟触发一次活动:
把这个命令放在后台运行(加while true; do echo "keep alive" >> /dev/null; sleep 300; done&),就能避免Cloud Shell因闲置超时断开。
二、持久化Jupyter数据,避免重启后丢失
Cloud Shell只有$HOME目录是持久化存储(最大5GB),所有笔记本文件和配置都要放在这里:
- 创建专属的Jupyter工作目录
mkdir -p $HOME/jupyter_notebooks - 启动Jupyter时指定这个目录
这样所有新建的笔记本都会自动保存在这个持久化目录里,不会因为实例重置丢失。jupyter notebook --ip=0.0.0.0 --port=8080 --notebook-dir=$HOME/jupyter_notebooks - 迁移已有的笔记本
如果之前已经在临时目录创建了笔记本,把它们移动到持久化目录:mv /tmp/*.ipynb $HOME/jupyter_notebooks/ - 保存Jupyter配置
Jupyter的配置文件(比如密码、端口设置)默认存在$HOME/.jupyter/下,这个目录也是持久化的,所以重启后你的配置不会丢失。
额外提醒
Cloud Shell的实例最长连续运行时间是12小时,到期后还是会自动终止,所以建议:
- 每隔一段时间把重要的笔记本文件下载到本地,或者上传到Google Cloud Storage(GCS)备份。
- 如果需要长时间运行Jupyter(超过12小时),建议改用Google Compute Engine(GCE)实例,Cloud Shell本质是临时会话环境,不适合长期运行服务。
内容的提问来源于stack exchange,提问作者hiyoung liu




