如何使用Linux Screen命令进行远程SSH

时间:2020-03-05 15:29:24  来源:igfitidea点击:

使用ssh命令时,它仅提供一个屏幕(终端)。
如果丢失了该屏幕,则将丢失在远程计算机上所做的所有操作。
有时,当网络故障中断ssh连接并且我们丢失了正在执行的操作而必须重新连接远程服务器时,就会发生这种情况。
如果我们正处于一些重要的事情之中,那将是非常糟糕的。
例如,如果我们想一次执行“ vi httpd.conf”,“ tail -f/var/log/messages”和“ service httpd reload”之类的三件事,则需要打开三个单独的ssh会话。

GNU屏幕实用程序是终端多路复用器。
如果我们是在远程服务器上工作的系统管理员,那么screen是仅通过命令行界面即可管理远程计算机的绝佳工具。
它使我们可以断开与它的连接,然后在以后重新连接到该相同的屏幕会话。

它默认安装在Ubuntu中,对于基于RHEL的系统,我们可以在yum命令的帮助下安装屏幕

# yum install screen

要使用屏幕,只需键入以下命令:

$screen

我们可能会看到欢迎消息(如果有),然后在窗口中看到常规的bash提示。
要控制屏幕,请按“ Ctrl + a”组合键,然后再按一次键盘。

例如,“ Ctrl + a”后跟“?
” (标记为Ctrl + a ,?)显示帮助屏幕。

以下是一些可用于操作屏幕的命令和控制键。

屏幕控制键

$screen -ls
There is a screen on:
7089.pts-1.server10 (Attached)
1 Socket in /var/run/screen/S-francois.
Change window title
$Ctrl+a, a
Set window's title to: My Server10
Create a new window
$Ctrl+a, c
Show active window titles
$Ctrl+a, "
Num Name Flags
0 My Server Up/down arrows change windows
1 bash
Detach screen from terminal
$Ctrl+a, d

上面显示的屏幕会话导致创建了两个窗口(每个窗口都运行bash shell)。
我们可以创建任意数量的名称,并根据需要选择名称。
另外,我们可以通过在每个打开的窗口中退出shell程序(键入exit或者Ctrl + d)来关闭它,而不是从屏幕会话中分离出来。

重新连接到屏幕会话

当屏幕会话断开时,我们将返回到首次登录服务器时打开的shell程序。
我们可以稍后再返回该屏幕(即使在注销并断开与服务器的连接之后)。
要在仅运行一个屏幕时重新连接,请键入以下内容:

$screen -r

如果正在运行多个屏幕会话,则“ screen -r”将不起作用。
例如,这显示了当两个分离的屏幕会话正在运行时会发生什么:

$screen -r
There are several suitable screens on:
2242.pts-4.server10 (Detached)
3354.pts-4.server10 (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
As the output suggests, you could identify the screen session and select which screen you want to connect to:
$screen -r 2242.pts-4.server10

命名屏幕会话

除了使用默认名称之外,我们还可以在启动屏幕时为屏幕会话创建更多描述性名称。

例如:

$screen -S testsession
$screen -ls
There is a screen on:
26523.testsession (Attached)

共享屏幕会话

对于系统管理员来说,这是非常重要的东西。
screen命令还允许共享屏幕。

此功能非常适合技术支持,因为连接到该会话的每个人都可以键入并观看当前会话。
如上一节所述,创建一个命名屏幕使此过程变得更加容易。
然后,另一台计算机上的另一个人可以SSH到服务器(使用相同的用户名)并键入以下内容:

$screen -x testsession

与'screen -r'一样,如果仅运行一个屏幕,则无需指定要连接到的屏幕:

$screen -x