您是否遇到过这样的情况:您在远程计算机上执行长时间运行的任务,突然连接断开,SSH 会话终止,您的工作丢失。好吧,我们所有人都曾在某个时刻发生过这种事,不是吗?幸运的是,有一个名为 的实用程序screen
可以让我们恢复会话。您是否遇到过这样的情况:您在远程计算机上执行长时间运行的任务,突然连接断开,SSH 会话终止,您的工作丢失。好吧,我们所有人都曾在某个时刻发生过这种事,不是吗?幸运的是,有一个名为 的实用程序screen
可以让我们恢复会话。
Screen 或 GNU Screen 是一个终端多路复用器。换句话说,这意味着您可以启动屏幕会话,然后在该会话中打开任意数量的窗口(虚拟终端)。即使您断开连接,在屏幕中运行的进程在其窗口不可见时也将继续运行。
现在大多数 Linux 发行版都预装了 screen 软件包。您可以通过键入以下内容来检查它是否已安装在您的系统上:
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>screen --version</code>复制</span></span>
Screen version 4.06.02 (GNU) 23-Oct-17
复制
如果您的系统上没有安装 screen,您可以使用发行版的包管理器轻松安装它。
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>sudo apt update</code><code>sudo apt install screen</code>复制复制</span></span>
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>sudo yum install screen</code>复制</span></span>
要启动屏幕会话,只需screen
在控制台中输入:
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>screen</code>复制</span></span>
这将打开一个屏幕会话,创建一个新窗口,并在该窗口中启动一个 shell。
现在您已经打开了屏幕会话,您可以通过键入以下内容来获取命令列表:
Ctrl+a
?
当您运行多个屏幕会话时,命名会话非常有用。要创建命名会话,请使用以下参数运行 screen 命令:
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>screen -S session_name</code>复制</span></span>
选择一个描述性的会话名称总是一个好主意。
当您启动新的屏幕会话时,它会创建一个带有 shell 的窗口。
您可以在 Screen 会话中拥有多个窗口。
要创建外壳类型为 的新窗口,将为其分配Ctrl+a
c
该范围中的第一个可用编号。0...9
以下是管理 Linux Screen Windows 的一些最常用命令:
Ctrl+a
c
创建一个新窗口(带外壳)。Ctrl+a
"
列出所有窗口。Ctrl+a
0
切换到窗口 0(按编号)。Ctrl+a
A
重命名当前窗口。Ctrl+a
S
将当前区域水平分割为两个区域。Ctrl+a
|
将当前区域垂直分割为两个区域。Ctrl+a
tab
将输入焦点切换到下一个区域。Ctrl+a
Ctrl+a
在当前窗口和上一个窗口之间切换Ctrl+a
Q
关闭除当前区域之外的所有区域。Ctrl+a
X
关闭当前区域。您可以随时通过键入以下内容从屏幕会话中分离:
Ctrl+a
d
在您脱离会话后,在屏幕会话中运行的程序将继续运行。
要恢复屏幕会话,请使用以下命令:
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>screen -r</code>复制</span></span>
如果您的计算机上运行多个屏幕会话,则需要在切换后附加屏幕会话 ID r
。
要查找会话 ID,请列出当前正在运行的屏幕会话:
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>screen -ls</code>复制</span></span>
There are screens on:
10835.pts-0.linuxize-desktop (Detached)
10366.pts-0.linuxize-desktop (Detached)
2 Sockets in /run/screens/S-linuxize.
复制
如果要恢复屏幕 10835.pts-0,请键入以下命令:
<span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><span style="color:#1f2937"><code>screen -r 10835</code>复制</span></span>
screen
启动时,如果文件存在/etc/screenrc
,它会读取其配置参数。~/.screenrc
我们可以使用该文件根据我们的喜好修改默认屏幕设置.screenrc
。
这是一个~/.screenrc
带有自定义状态行和一些附加选项的示例配置:
<span style="color:#1f2937"><span style="background-color:#ffffff"><span style="background-color:rgb(243 244 246/var(--tw-bg-opacity))"><code class="language-cfg"><span style="color:#60a0b0"><em># Turn off the welcome message</em></span>
<span style="color:#4070a0">startup_message off</span>
<span style="color:#60a0b0"><em># Disable visual bell</em></span>
<span style="color:#4070a0">vbell off</span>
<span style="color:#60a0b0"><em># Set scrollback buffer to 10000</em></span>
<span style="color:#4070a0">defscrollback 10000</span>
<span style="color:#60a0b0"><em># Customize the status line</em></span>
<span style="color:#4070a0">hardstatus alwayslastline</span>
<span style="color:#4070a0">hardstatus string '%{</span><span style="color:#666666">=</span> <span style="color:#4070a0">kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'</span>
</code></span></span></span>
复制
以下是开始使用 screen 的最基本步骤:
在本教程中,您学习了如何使用 Gnu Screen。现在,您可以开始使用屏幕实用程序并从单个会话创建多个屏幕窗口、在窗口之间导航、分离和恢复屏幕会话以及使用该文件个性化您的屏幕终端.screenrc
。
页面上可以了解更多有关 Gnu Screen 的信息 。
如果您有任何问题或反馈,请随时发表评论。