跑代码时ssh中断怎么恢复?

本文介绍了Linux中的screen工具,用于解决远程连接时因网络问题中断程序的问题。通过安装screen,可以创建虚拟窗口,即使中断连接也能恢复程序运行状态。文章详细阐述了screen的安装、新建窗口、查看、恢复窗口以及中断后恢复的操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 前言

今天要和大家介绍的是一个在Linux系统中人称挂机神器的screen工具。为什么我们会需要这个工具呢?请匹配自己在通过ssh远程连接服务器的时候是否出现过以下烦恼:

  • 正在运行某个程序,由于网络不好ssh突然中断了,再次连接ssh后发现程序进程还在后台,但就是恢复不到程序的运行界面;
  • 运行某个程序时需要打开多个终端运行后台service服务,而你又不想每次连接ssh后都做这个繁琐的工作,希望能这些服务能够在服务器上一直运行着,哪怕是重新连接后也能恢复到对应的运行窗口;

如果你也遇到过上述类似情况,那请你赶快试试screen。

2 安装

1.1 在线安装

如果你的电脑能够连接外网,那么直接执行如下命令即可:

  • Ubuntu

    sudo apt-get install screen
    
  • Centos

    yum -y install screen
    

1.2 离线安装

如果你的电脑并不能够连接外网,那我们就以离线的方式进行安装:

  • 第一步:下载安装包

    打开链接 https://ftp.gnu.org/gnu/screen/ 下载一个最近几年版本的都行,此处以screen-4.6.0.tar.gz为例。

  • 第二步:解压安装包

    • 在安装包所在的目录执行如下命令

      tar -zxvf screen-4.6.0.tar.gz
      
    • 进入到解压后的目录

      cd screen-4.6.0/
      
### 解决SSH连接下训练机器学习模型过程中的网络中断 为了确保在网络不稳定的情况下能够持续进行机器学习模型的训练,可以采取多种策略来增强系统的鲁棒性和可靠性。 #### 使用NoHup命令与Screen/Tmux工具组合 当通过SSH远程执行长间运行的任务,推荐使用`nohup`命令结合`screen`或`tmux`会话管理器。这允许即使SSH开也能继续执行程序[^1]: ```bash nohup python train_model.py & ``` 对于更复杂的交互需求,创建一个新的`screen`会话并从中启动训练脚本是一个不错的选择: ```bash screen -S training_session # 在此窗口内启动Python脚本... python train_model.py # 可以按Ctrl+A再按D键分离当前会话而不终止进程 ``` 或者利用`tmux`实现相似功能: ```bash tmux new -s training_session # 同样在此终端里起Python代码... python train_model.py # 输入Ctrl+B再松开后按下d即可脱离该session ``` 这两种方法都可以让用户的操作不受限于特定的SSH连接状态,从而有效预防因意外掉线而导致的工作丢失问题。 #### 实现自动重连机制 除了上述手段外,在编写分布式计算框架下的应用程序还可以考虑加入心跳检测以及相应的异常处理逻辑,以便在短暂失联之后重新建立通信链路并恢复未完成的数据传输任务。不过这类方案通常较为复杂,适用于大型集群环境而非简单的单机实验场景。 #### 记录中间结果定期保存 无论采用何种方式维持稳定的服务端作业流程,都建议频繁地将临成果写入磁盘文件或其他持久化存储介质之中。这样即便发生不可抗力事件造成整个系统崩溃重启,也可以从最近一次成功备份的位置快速回溯进展而不是全部推倒重来。 例如可以在训练循环内部每隔固定轮次调用如下函数来进行参数快照保留: ```python import torch def save_checkpoint(model, optimizer, epoch, path='checkpoint.pth'): checkpoint = { 'model_state_dict': model.state_dict(), 'optimizer_state_dict': optimizer.state_dict(), 'epoch': epoch, } torch.save(checkpoint, path) for e in range(num_epochs): # ...训练迭代... if (e + 1) % save_interval == 0: save_checkpoint(model, optimizer, e+1) ``` 这样做不仅有助于应对突发状况带来的风险,同也方便后续对比不同版本之间的性能差异变化趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值