马春杰杰 Exit Reader Mode

[mcj]利用screen解决ssh连接shell终端断开之后任务终止的问题

1 问题描述

利用ssh进行远程连接的时候,有时候如果不小心断了连接之后,正在进行的任务就会被杀死,特别是如果我们想要长时间运行一些程序的时候,这种情况下我们会崩溃的。

这时,我们就可以用screen命令,可以完美的解决这个问题。

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

2 screen使用

2.1 安装

ubuntu下安装很简单,直接:

sudo apt install screen

2.2 新建窗口

在实际使用的时候,首先创建一个新的名为name的窗口:

screen -S name

当我们输完命令之后,会发现依然是一个终端窗口,其实这个时候我们已经进入screen了,我们可以在这个窗口运行我们想要的命令。比如训练一个深度学习模型,这往往需要很久,这时就可以创建一个screen窗口,然后让它自己运行即可。

2.3 分离窗口

当程序开始运行的时候,我们就可以将会话分离

输入以下命令进行分离会话:

ctrl+A+D
@[detached from 1689.mcj]

2.4 恢复窗口

等我们想重新查看该终端的时候,再恢复会话即可。

screen -ls
#There is a screen on:
#        1689.mcj        (06/12/2019 02:09:24 PM)        (Detached)
#1 Socket in /var/run/screen/S-ubuntu.
screen -r 1689

如果状态为attached,则需要先分离,再恢复:

screen -D  -r 1689

2.5 如何复制多页文字?

正常进入screen之后,鼠标滚轮就不能进行页面滑动了,也就不能复制多个页面的文字,解决方法:

快捷键:Ctrl+A+[

本文最后更新于2021年8月24日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!