使用服务器时,关闭SSH终端程序终止的解决方案。

一、需求分析

通过SSH登录或者以SSH为基础的工具软件(例如xshell、pycharm、vscode等)长时间运行代码时,会出现SSH连接中断导致程序终止,导致训练失败。本文介绍一种方法解决此问题以供参考,此类方法也被广泛称为守护线程

二、守护线程的几种方式

  1. screen(本文重点介绍)
  2. tmux(如需安装执行:apt-get update && apt-get install -y tmux)工具,这里不做介绍

三、screen的具体用法

  1. 安装screen(在终端中执行命令)
    apt-get update && apt-get install -y screen
  2. 使用方法
    ①创建一个新会话
    终端中执行screen命令,在该界面按回车键,此时会出现一个和之前完全一样的终端(实际上是两个),新出现的终端测试与百度的连通状态。
    在这里插入图片描述
    如果使用screen打开终端后中文乱码,顺序执行以下命令后重新进入screen终端。
    echo "defencoding GBK" >> ~/.screenrc
    echo "encoding UTF-8 GBK" >> ~/.screenrc
    ②离开回话
    在用screen打开的终端中使用快捷键:ctl + a + d,会退出到原终端,并且显示detached,意味着这个会话只是离开并未退出。
    在这里插入图片描述
    ③找到离开的会话(终端)
    找到之前所有离开的会话,命令为screen -ls
    在这里插入图片描述
    ④重回会话
    命令为screen -r xxx(xxx表示“终端”)在本教程中即为上图的“ 2819.pts-0.autodl-container-60c311bc08-60374998”,此处请根据实际情况修改,
    在这里插入图片描述
    此时可以看到新“终端”不断ping百度,尽管退出但程序依然在执行,此方法适用于长时间运行在服务器的程序。因此就可以将我们的程序放在screen的会话中执行,然后离开会话,等我们需要看日志时再恢复到这个会话中。
    ④退出新“终端”,回到原始终端
    在用screen打开的终端中使用快捷键:ctrl + d。如果有正在执行的程序,先ctrl + c终止程序
    tips:screen乱码问题¶
    加上-U参数即可,比如
    新建:screen -U
    恢复:screen -U -r xxx

四、其他情况

如果长时间在终端中运行代码建议对日志重定向,防止断网后中间的日志丢失,使用方法。

# 日志重定向到train.log文件。即在你的命令后加上:> train.log 2>&1
python xxx.py > train.log 2>&1
# 实时查看日志
tail -f train.log
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值