如何在 Linux 中使用 screen 命令

什么是屏幕?

Screen 是 Linux 中的一个终端程序,它允许我们使用虚拟(VT100 终端)作为全屏窗口管理器,它在多个进程(通常是交互式 shell)之间多路复用打开的物理终端。 它允许我们在单个终端或远程终端会话中访问多个终端会话。 在命令行上处理多个 Linux shell 命令以及将命令与启动命令的 shell 分开时,它最有用。

Screen 还允许用户从一个终端启动命令,断开与该终端的连接,然后从不同位置重新连接到同一终端,同时使用不同的终端而无需重新启动命令。 这只是让用户更好地控制多个单独的命令窗口。

Screen 还允许多台远程计算机一次连接到同一个屏幕会话。 这允许多个用户连接到同一个屏幕会话,从而允许第二个用户跟随另一个在服务器上工作的管理员。

基本命令

使用以下屏幕命令启动屏幕:

screen

屏幕标志

这是一些更常见的标志以及我们如何使用它们的列表。

查看表

旗帜D说明示例
-ls列出当前的屏幕会话屏幕-ls
-作为创建并命名一个包含所有功能的屏幕会话screen -aS 网名
-r恢复分离的屏幕会话屏幕 -r (名称|pid)
-X附加到附加的屏幕会话屏幕 -x (名称|pid)
-d分离附加的屏幕会话屏幕 -d (名称|pid)
-d
-m
以分离模式启动新的屏幕会话并运行 $command屏幕 -d -m $命令
-DR强制断开当前用户并与您的用户重新连接屏幕-DR
-擦拭删除所有死屏会话。 (无法访问的会话)屏幕擦除

默认会话键绑定

在屏幕会话中, ctrl+a 激活键绑定。 下表显示了一些默认键绑定:

查看表

钥匙捆绑
?显示键绑定。
一种为当前窗口设置标题。
C创建一个新窗口。
n切换到下一个窗口。
p切换到上一个窗口。
0-9切换到窗口编号 n。
w显示窗口列表。
提供一个可供选择的窗口列表。
F将窗口大小调整为当前区域大小。
[或esc[orescEnter 复制/回滚模式。
ķ销毁当前窗口。

屏幕示例

要获取可用屏幕的完整列表,请使用以下命令:

screen -ls

然后我们会看到类似这样的输出:

There is a screen on:  
  26092.ttyp0.host
  (Attached) 1 Socket in /tmp/screens/S-root.

此输出通常向我们显示当前正在运行的屏幕。 正如您从“(附加)”输出中看到的那样,26092 会话当前已附加到终端。 由于此屏幕当前已附加,我们可以使用此命令远程分离它。

screen -d 26092

如果另一个用户登录到此屏幕会话并积极工作,此修改将终止他们的会话。 因此,请注意以这种方式分离屏幕会话。 要重新连接到同一屏幕,请运行此命令。

screen -r 26092

我们可以使用此命令同时分离和重新连接到屏幕。

screen -d -r 26092

为了创建一个名为 LW 的新屏幕会话,我们可以输入此命令。

screen -S LW

修改屏幕行为

回滚

要在 xterm 中启用回滚,我们可以将以下信息添加到我们工作站上的 ~/.screenrc 文件中。

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

日志记录

如果我们在 screen 中使用 -L 选项,它会告诉 screen 打开窗口的自动日志输出。 这将在当前目录中创建一个名为 screenlog.# 的文件,其中 # 是该屏幕的 ID 号,从 0 开始。

screen -L -S LW

多用户屏幕会话

如果我们需要与他人共享会话,多用户是一个很好的选择。 出于安全原因,默认情况下它不会打开,但可以轻松启用。 为了允许多个用户连接到同一个屏幕会话, 多用户 选项必须启用。 以下是完成此任务所需的步骤。

  1. 首先登录到服务器并通过命令行启动屏幕会话。
  2. 接下来,输入 Ctrl-a 进入命令模式。
  3. 现在,输入“:”(冒号)进入屏幕的内置命令行。
  4. 我们现在可以通过在屏幕的命令行中输入 multiuser on 来激活多用户模式,该命令行以反色显示在控制台窗口的底部。
  5. 要确认此更改,请点击 Enter 或返回。

如果我们试图向某人展示我们在服务器上所做的事情,多用户模式会非常有用。 启用此模式后,其他用户将能够在该屏幕会话中跟随我们的击键。

进一步探索

如果需要更深入的信息,我们始终可以使用以下方式查阅屏幕手册页:

man screen

屏幕技巧

启动一个名为 长宽 并在其中运行 top 命令而不附加它,似乎什么都不会发生,但是您会看到带有 screen -ls 的屏幕:

screen -S LW -d -m top

要结束或终止 LW 屏幕会话,请使用以下命令:

screen -S LW -p 0 -X kill

开始一个 bash session 在屏幕上,我们可以使用这个命令:

screen -S LW -d -m /bin/bash

要在屏幕会话中运行 ls 命令,请使用以下命令:

screen -S LW -p 0 -X exec ls /home

要结束或终止 LW 屏幕会话,请运行以下命令:

screen -S LW -p 0 -X kill

要在屏幕窗口中向上滚动,请使用以下命令:

CTRL+a then ESC, #Press CTRL KEY and 'A' KEY together and then hit the ESC KEY #to scroll using the arrow keys hit ESC again to exit.

最有用的屏幕命令

这是我们可能需要使用的最有用的屏幕命令的快速概述。

注意:我们应该以小写输入这些关键命令,但它们在这里以大写显示以使命令更具可读性。

  • Ctrl+A, C – 此键盘命令创建一个新屏幕
  • Ctrl+A, N(其中 N 等于屏幕的编号) – 这个键命令将我们切换到特定屏幕
  • Ctrl+A, A – 这个键盘命令将我们切换到下一个屏幕
  • Ctrl+A, W – 这个键命令让我们查看屏幕列表
  • Ctrl+A, ” (双引号) – 这个键盘命令允许我们查看屏幕选择器
  • Ctrl+A, Ctrl+D – 这个键命令将我们从当前会话中分离出来
  • screen -R – 这个关键命令将我们附加到正在运行的屏幕会话
  • Ctrl+A, ? – 此键命令向我们显示快捷键选项

我们可以使用许多其他命令来控制屏幕会话,其中许多可以通过键入“Ctrl+A?”来查看。 在提示下。 这将打开一个帮助窗口,向我们显示所有可用的键绑定。 为了 example:

  • ‘Ca p’ 和 ‘Can n’ 键序列可用于切换到下一个或上一个窗口。
  • 使用“Ca N”键序列 – (其中 N 是从 0 到 9 的数字,可以连接到相应的屏幕窗口。
  • “Ca w”键序列显示所有屏幕窗口的列表。 对于每个单独的窗口,都会显示每个窗口的唯一 ID、名称和正在运行的进程。 当前窗口将标有星号
  • .
  • ‘Ca k’ 键序列将终止当前窗口会话。 我们也可以输入“exit”来终止当前窗口。 如果没有打开其他屏幕会话,屏幕将简单地退出。 ‘Ca ‘ 键序列也完成了同样的任务。

“Ca d”键序列将 与当前屏幕会话分离。 close 我们还可以通过关闭正在运行我们的屏幕实用程序的终端来从屏幕上分离。 虽然这可能看起来

我们的终端会话,实际上这只是关闭终端并从当前终端取消绑定我们的会话。 在我们的屏幕下启动的所有命令将继续运行。 example我们还可以从服务器注销并再次登录,然后重新启动终端会话并键入“screen -r”以从我们离开的位置再次连接。 如果服务器上有多个正在运行的 screen 会话,screen 会提示我们输入 host.tty.pid。 为了

$ screen -r There are several suitable screens on:
2999.pts-6.localhost (Detached)
 1920.PTS-6.localhost (Detached)
 To connect to one of the above detached screens
 run, screen -d -r 2999.pts-6.localhost
 to resume that screen.

,假设我有两个屏幕会话。 因此,当我们键入“screen -r”命令时,它会给出以下消息:

结论

当我们必须每天使用终端时,屏幕是一个非常宝贵的工具。 它允许我们利用有限的屏幕空间,同时保持终端窗口的全部功能。 此外,屏幕可以用作教学工具,允许多个用户连接到现有屏幕,如果我们启用了日志记录,则与用户共享该文件以供以后参考。

您是否尝试使用屏幕命令并在程序的控制命令、标志或其他选项方面遇到一些困难? 我们知识渊博的系统管理员和经验丰富的 linux 技术人员随时待命,为您提供所需的帮助。 今天给我们打电话 800.580.4985,或者打开一个 聊天

或与我们订票立即与我们交谈!