GNU Screen(或简称 Screen)是一款实用且多功能,但有些被低估的实用程序,作为 GNU 项目的一部分,它几乎包含在每个 Linux 或 UNIX 发行版中或可供使用。Screen 是一种终端复用器,类似于您在窗口管理器中找到的。如果您只能通过 SSH 链接或通过控制台上的终端会话在计算机或虚拟机上工作,那么它尤其有用。我发现最有用的两个功能是在 Screen 会话中打开多个窗口的能力,以及断开和重新连接 Screen 而不会丢失当前会话的能力。
Screen 只需使用 screen 命令即可启动。
Screen 基础知识
首先,简单介绍一下如何控制 Screen。Screen 通过控制序列 Ctrl+a 工作。在 Screen 会话中输入的所有字符都直接发送到 shell,除了 Ctrl+a。Ctrl+a 后跟一个字符是您向 Screen 发送命令序列的方式。例如,Ctrl+a ? 会调出带有默认按键绑定的帮助页面。
Screen 允许您在单个终端会话中创建多个窗口。输入 Ctrl+a c 会在 Screen 中启动一个新窗口。这就像一个独立的窗口,有自己的 shell。Ctrl+a K 将杀死当前窗口。
Ctrl+a n 和 Ctrl+a p 将分别移动到下一个和上一个屏幕。或者,Ctrl+a # 可以通过编号在屏幕会话之间切换,按照它们启动的顺序排列。还有一个命令可以显示所有当前窗口的列表,并允许使用光标键进行选择,即 Ctrl+a "。
Screen 最强大的功能之一是断开和重新连接屏幕会话的能力。当您使用不可靠的连接,或者如果您知道您将从一个网络移动到另一个网络,或从一台计算机移动到另一台计算机时,这非常有用。Ctrl+a d 断开您的屏幕会话。然后您可以注销您的 SSH 会话。当您想继续时,再次登录并使用 -r (表示恢复)选项启动 screen。
您的屏幕会话将从您离开的地方恢复,所有进程都像您离开时一样运行。如果您的会话突然断开连接,您可以类似地使用相同的命令重新连接。如果主机尚未确认您的会话已断开连接,您可以使用 screen -r -d 进行恢复和断开连接,以允许 screen 断开会话并重新连接。如果您的网络连接不可靠,这可能是一个救命稻草。
安装 Screen
Screen 默认安装在某些发行版上,例如 SuSE 和 Slackware。在我尝试过的所有 Linux 发行版上,我都能够使用标准软件包管理器从默认存储库安装 screen。例如,在 Red Hat Enterprise Linux 或 Fedora 上,我能够分别使用 yum 或 dnf 进行安装。在 Debian 和像 Ubuntu 这样的衍生版本下,您可以使用 apt-get 执行相同的操作。我也能够使用 FreeBSD 上的端口安装 screen。
更多高级 Screen 功能
Screen 会话可以拆分。水平拆分通过 Ctrl+a S 完成。这将把您当前的窗口水平分成两半。区域之间的切换通过 Ctrl+a Tab 完成。其他窗口切换命令在拆分屏幕中工作。可以使用 Ctrl+a X 删除拆分窗口。在较新版本的 Screen 中,可以使用 Ctrl+a | 创建垂直拆分。
可以使用 Ctrl+a H 命令启动当前屏幕会话的日志文件,这将创建一个名为 screenlog.X 的文件,其中 X 是您的屏幕会话的编号。可以使用 Ctrl+a h 调用当前屏幕窗口中内容的屏幕截图,创建一个名为 hardcopy.X 的文件。可以使用 Ctrl+a x 命令锁定屏幕会话,这将使用当前用户的密码锁定屏幕。
为什么选择 GNU Screen?
我经常被问到为什么要使用 Screen 而不是像 tmux 这样的更新的工具?我的回答很简单:GNU Screen 易于使用且无处不在。它已经安装在我工作的服务器上,并且完美地完成了我需要的工作。如果存在需要解决的缺陷,我会立即寻找更好的工具,但 Screen 确实完成了我需要它做的工作。希望您会发现 GNU Screen 和我一样有用,并利用这个经常被忽视的实用程序。
有关 GNU Screen 的更多信息,请阅读 手册页 或查看此 快速参考。
Bob Murphy 将在今年的 SCALE 15x 上发表演讲,题为:GNU screen 简介。(或者:如何让命令行为您工作,尤其是在网络串通阻止您时。)
8 条评论