You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何设置让Google Cloud Shell保持连接?解决1小时自动断开问题

解决Google Cloud Shell运行Jupyter Notebook断开后内容丢失的问题

这问题我之前帮不少人解决过——Cloud Shell的默认行为确实容易坑到刚用的人,核心原因有两个:一是闲置1小时就会自动终止实例,二是除了$HOME目录外,其他存储都是临时的,重启就清空。下面给你两套解决方案,结合起来用就稳了:

一、维持Cloud Shell连接,防止实例自动终止

Cloud Shell的1小时闲置超时是硬性规则,但我们可以用终端复用工具让Jupyter在后台持续运行,即使Cloud Shell断开,重新连接后也能恢复会话:

  • 使用tmux(推荐,Cloud Shell默认自带)
    1. 创建一个专属的tmux会话:
      tmux new -s jupyter_session
      
    2. 在这个会话里启动Jupyter Notebook:
      jupyter notebook --ip=0.0.0.0 --port=8080
      
    3. 暂时离开会话(比如需要关闭Cloud Shell窗口):按下Ctrl+B,然后松开按D,会话会在后台保持运行。
    4. 重新连接Cloud Shell后,恢复之前的会话:
      tmux attach -t jupyter_session
      
  • 辅助:防止被判定为闲置
    如果怕长时间操作被判定为闲置,还可以在终端里运行一个简单的定时命令,每隔5分钟触发一次活动:
    while true; do echo "keep alive" >> /dev/null; sleep 300; done
    
    把这个命令放在后台运行(加&),就能避免Cloud Shell因闲置超时断开。

二、持久化Jupyter数据,避免重启后丢失

Cloud Shell只有$HOME目录是持久化存储(最大5GB),所有笔记本文件和配置都要放在这里:

  1. 创建专属的Jupyter工作目录
    mkdir -p $HOME/jupyter_notebooks
    
  2. 启动Jupyter时指定这个目录
    jupyter notebook --ip=0.0.0.0 --port=8080 --notebook-dir=$HOME/jupyter_notebooks
    
    这样所有新建的笔记本都会自动保存在这个持久化目录里,不会因为实例重置丢失。
  3. 迁移已有的笔记本
    如果之前已经在临时目录创建了笔记本,把它们移动到持久化目录:
    mv /tmp/*.ipynb $HOME/jupyter_notebooks/
    
  4. 保存Jupyter配置
    Jupyter的配置文件(比如密码、端口设置)默认存在$HOME/.jupyter/下,这个目录也是持久化的,所以重启后你的配置不会丢失。

额外提醒

Cloud Shell的实例最长连续运行时间是12小时,到期后还是会自动终止,所以建议:

  • 每隔一段时间把重要的笔记本文件下载到本地,或者上传到Google Cloud Storage(GCS)备份。
  • 如果需要长时间运行Jupyter(超过12小时),建议改用Google Compute Engine(GCE)实例,Cloud Shell本质是临时会话环境,不适合长期运行服务。

内容的提问来源于stack exchange,提问作者hiyoung liu

火山引擎 最新活动