前言
不知道小伙伴们是否遇到过这样的场景:
有时候,我们本地通过 ssh 连接到远程服务器并不是很稳定,经常会断开连接。如果此时我们正在做类似更新系统、DD 系统、远程传输 / 下载文件等需要一定时间的操作,就会非常难受,好不容易传了半天的文件,中断了,又得重新来传一次,还得祈祷这次别传一半断开了。
今天我们介绍的这个工具 ——screen,就是为了来解决上面这些问题的!
注:本次只介绍简单的 scrren 用法,更高阶的用法可以自己 Google 搜索或者问 chatgpt = =
Screen 是什么?
Screen 是一个 linux 里面非常古老而又非常有用的命令,提供从单个 SSH 会话中使用多个 shell 窗口(会话)的能力。当会话被分离或网络中断时,screen 会话中启动的进程仍将运行,我们可以随时重新连接到 screen 会话。
这一点对于远程登录的用户特别有用 —— 即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。
Screen 怎么用?
安装 Screen
因为 screen 是 “元老级” 的 GNU 计划项目(初始版本早在 1987 年就发布),所以不管是 apt 软件源、或者是 yum 软件源等其他软件源,都存在 screen,只需要使用软件源安装命令即可(强烈建议大家用 Debian 和 Ubuntu 系统 ):
# 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 iigeek
这样就在当前的 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
这个会话。
好了,这下舒服了,赶紧去试试!
- 最新
- 最热
只看作者