如何使用 screen 命令提高 Linux 终端的工作效率
与系统管理员使用的许多工具类似,Linux screen
命令是另一个有助于提高工作效率的出色工具。 screen
可以被视为 Tmux 的替代品,但除了节省屏幕空间之外,它还有许多其他有用的选项。 screen
允许您创建终端/交互式 shell 的多个会话。在本教程中,我将向您简要介绍 screen
并介绍该命令的几个用例。
screen
命令的主要优点
重点介绍 screen
的一些主要优点:
您可以通过 SSH 在远程终端中开始工作,与其分离,然后根据需要从不同的计算机/设备重新连接到同一终端。
如果您的 SSH 连接断开,您的终端会话不会终止。相反,您通过
screen
的终端将处于“已连接”状态,直到您稍后重新连接以从中断处继续。您可以在处于分离状态的
screen
会话中运行长时间运行的进程。您可以通过
screen
向任何需要输入的进程发送命令。
在 Linux 上安装 screen
您可以使用操作系统包管理器安装screen
。
对于 Debian/Ubuntu:
$ sudo apt-get install screen
对于 RHEL/CentOS/Fedora:
$ sudo yum install screen
screen
会话基础知识
1. 启动 screen
会话
要启动新的 screen
会话,只需键入:
$ screen
您现在将看到一个新的空白终端打开。要检查您是否处于 screen
会话中,请输入以下命令:
$ echo $TERM
如果您处于 screen
会话中,输出将为 screen
或类似内容(例如 screen.xterm-256color
)。否则,它将打印xterm
。
2. 从 screen
会话中分离
现在让我们脱离 screen
会话。输入 CTRL-a d
进行分离。您将看到一些输出,显示您已脱离会话。

您现在回到原来的终端。
3.检查可用screen
会话列表
接下来,让我们检查哪些 screen
会话正在运行/可用。以下命令将显示当前可用的屏幕会话列表及其各自的状态(即附加或分离)。由于只有一个可用会话,因此您将看到一个屏幕
会话。您还将看到您当前已脱离该会话。
$ screen -ls

4. 附加到现有的 screen
会话
接下来,为了在您之前创建的 screen
会话中连接回您的终端,您需要使用以下命令再次附加到该会话:
$ screen -x
如果有多个可用的 screen
会话,您需要在 -x
之后指定会话的名称(请参阅下面的多会话示例)。
5. 终止screen
会话
如果您在 screen
会话中输入 exit
,该会话将自动终止,并且您稍后将无法重新附加到该会话。
6. 在屏幕会话内向上/向下滚动
当您处于 screen
会话中时,您会注意到无法使用终端程序的滚动条上下滚动终端会话。这是因为终端会话的输出是由 screen
实用程序控制的。要在屏幕会话内启用滚动,您需要按“CTRL-a ESC”进入所谓的“复制”模式。进入该模式后,您可以使用“向上”/“向下”键或鼠标滚轮向上/向下滚动屏幕
会话。再次按“ESC”键退出“复印”模式。
这是 screen
命令的快速概述。虽然一些系统管理员的屏幕
知识仅限于此,但该工具还有许多其他选项可以进一步提高工作效率。在本教程的其余部分中,我将展示 screen
的几个示例用例。
使用 screen
处理持续的 SSH 连接丢失
如果您通过 SSH 连接到 screen
会话,在离开后失去 SSH 连接,您的 screen
会话仍将运行。即使您失去了连接,screen
会话也将处于连接状态。重新登录并运行 screen -ls
命令后,您可以看到这一点:

要重新连接到仍处于“已连接”状态的 screen
会话,请运行以下命令:
$ screen -d -x
然后,您将能够从上次中断的地方恢复 SSH 终端会话。
维护多个屏幕
会话
如果您想要多个屏幕
会话怎么办?例如,您有多个同事使用同一用户帐户在同一服务器上工作?通过这种方式,多个屏幕会话会很有帮助。此外,您还可以通过命名每个会话来帮助减少多个屏幕会话的混乱。要为 screen
会话创建名称,请使用 -S
选项:
$ screen -S session1
现在您可以再次运行 screen -ls
命令并查看多个 screen
会话。如果要连接到特定会话,请使用 -x
选项:
$ screen -x session1
或者,您可以指定要连接的 screen
会话的 PID:
$ screen -x 925247
通过屏幕
发送命令
screen
中的另一个不错的选择是,如果您有正在等待输入的正在运行的进程,则可以通过 screen
发送命令。例如,当在 Linux 服务器上启动专用 Minecraft 服务器时,您将无法使用终端。该提示已替换为等待输入/命令的服务器提示。这就是 screen
派上用场的地方。您可以创建 screen
会话,运行 Minecraft 服务器,然后分离以返回到正常的终端提示符。然后,使用 screen
,您可以通过它发送命令,而无需附加到您的会话。要通过 screen
发送命令,请运行以下命令。
$ screen -S session1 -X stuff "save$(printf \\r)"
上面的命令使用 -S
作为会话名称,-X stuff
用作指定的 screen
会话的输入缓冲区,save
作为您想要运行的命令。您还需要包含“$(printf \\r)
”来输入回车符来运行命令。
记录您的屏幕
会话
screen
中的另一个内置选项是日志记录。通过增加使用 screen
的经验,您会注意到的一件事是,在 screen
会话中向上滚动终端历史记录可能很困难。您可以滚动浏览屏幕
会话,但需要按键盘并在屏幕上上下移动,如上所述。相反,查看终端历史记录的更简单方法是使用 screen
进行日志记录选项。要利用 screen
会话的日志记录,只需使用 screen
运行 -L
命令行选项即可:
$ screen -L
当您需要检查终端历史记录时,只需从 screen
会话中分离并查看日志即可。默认情况下,screen
的日志位于 cwd
(当前工作目录)中,这意味着您首次启动 screen 会话
的位置。如果您不确定 screen
会话的 cwd
在哪里,可以通过输入 CTRL-a :exec pwd
进行检查。这将在屏幕上输出cwd
- 这是您日志所在的位置。同样默认情况下,日志文件名将命名为 screenlog.0
。
结论
本教程向您简要介绍了在 Linux 主机上使用 screen
的基础知识。除了节省屏幕空间之外,它还有许多其他好处,如在其他计算机/设备上分离和重新连接、避免因网络断开而丢失宝贵的工作以及向长时间运行的进程发送命令所讨论的那样。请务必查看 screen
以及该工具可以使用的许多其他命令/选项。