侧边栏壁纸
博主头像
云BLOG 博主等级

行动起来,活在当下

  • 累计撰写 318 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Screen 会话中启动进程仍将运行随时重新连接到

Administrator
2025-08-05 / 0 评论 / 0 点赞 / 0 阅读 / 0 字
Screen是什么?
Screen 是一个Linux里面非常古老而又非常有用的命令,提供从单个 SSH 会话中使用多个 shell 窗口(会话)的能力。当会话被分离或网络中断时,screen 会话中启动的进程仍将运行,我们可以随时重新连接到 screen 会话。

这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。

Screen怎么用?
安装Screen
因为screen是“元老级”的GNU计划项目(初始版本早在1987年就发布),所以不管是apt软件源、或者是yum软件源等其他软件源,都存在screen,只需要使用软件源安装命令即可(强烈建议大家用Debian和Ubuntu系统——解释使用Debian而不是CentOS的原因):

# CentOS 7
yum install screen

# Debian/Ubuntu
apt install screen
经过评论区小伙伴提醒,CentOS 8及以上的用户需要安装Screen需要用到epel来安装

sudo yum install epel-release  # 安装epel

sudo yum install screen  #安装screen
启动一个会话
screen -S gugu
这样就在当前的SSH窗口里面开启了一个新的窗口,我们可以在这个窗口里面运行那些需要长时间跑着的命令(比如aria2的下载、scp/rsync的文件传输、dd系统等等)

挂起一个会话
我们按Control+a+d,就可以保持这个screen到后台并回到我们SSH的主终端。

好了,现在我们可以随意关掉SSH窗口或者在SSH窗口里干一些别的事情,刚刚的传输任务已经在另一个窗口继续运行了。

这其实表示我们已经成功从 Screen 会话中分离出来并回到原来的 Shell 会话中了。这时,Screen 会话会继续留在后台执行更新任务。而且无论是网络断开连接,还是关闭原来的 Shell 会话,它都不会受到影响。

当然,如果你来不及按会话分离快捷键(Control+a+d)网络就断开了,Screen 会话也不会关闭,它一样会继续留在后台执行更新任务。

恢复一个会话
过了一段时间,我们想看看到底传输到什么阶段了,怎么办?

screen -r
我们又回到了刚刚新建的gugu 这个窗口,可以看到现在传输还在进行当中。

需要注意的是,该命令只适用于当前终端只启动了一个 Screen 会话的情况。

退出一个会话
传输完成了,我们可以选择按Control+a+d 来回到我们SSH的主终端。

如果你想把这个窗口关闭,也可以选择直接运行exit来回到我们SSH的主终端。

查看已经存在的screen终端
screen -ls
即可查看已经创建(在后台运行的终端):


这个时候如果运行screen -r 具体名字来恢复某个Screen 会话了,

比如:

screen -r 3743091或者screen -r test 这俩命令都可以恢复test这个会话。

好了,这下舒服了,赶紧去试试!

0

评论区