如何使用Linux的screen命令

使用Linux 屏幕 命令,可以将正在运行的终端应用程序推送到后台,并在需要查看它们时将其向前拉。它还支持分屏显示,并且即使您断开连接并重新连接后,也可以通过SSH连接工作!

什么是屏幕命令?

屏幕 command是一个终端多路复用器,并且绝对包含选项。说它可以做很多事是轻描淡写的祖父。手册页长达4,100行。

以下是最常见的情况,您可以使用 屏幕 命令,我们将在本文中进一步介绍这些内容:

  • 标准操作是创建一个带有外壳的新窗口,运行命令,然后将窗口推到后台(称为“分离”)。当您想查看过程的运行情况时,可以再次将窗口拉到前台(“重新连接”)并再次使用它。这对于不需要关闭终端窗口意外终止的长进程非常有用。
  • 一旦你有一个 屏幕 会话运行时,您可以创建新窗口并在其中运行其他进程。您可以轻松地在窗口之间跳来监视它们的进度。您还可以将终端窗口划分为垂直或水平区域,并显示各种 屏幕 一个窗口中的两个窗口。
  • 您可以连接到远程计算机,启动一个 屏幕 会话,并启动一个过程。您可以断开与远程主机的连接,然后重新连接,您的进程仍将运行。
  • 您可以分享一个 屏幕 两个不同的SSH连接之间的会话,这样两个人可以实时看到相同的内容。

安装画面

安装 屏幕 在ubuntu上,使用以下命令:

sudo apt-get安装屏幕

安装屏幕 在Manjaro上,使用以下命令:

须藤吃豆人-屏幕

在Fedora上,键入以下内容:

sudo dnf安装屏幕

屏幕入门

开始 屏幕,只需按如下所示键入它,然后按Enter:

屏幕

您会看到一个许可证信息页面。您可以按空格键阅读第二页,或按Enter键返回命令提示符。

您留在命令提示符下,似乎什么都没发生。但是,您现在在多路复用终端仿真器中运行外壳程序。为什么这是一件好事?好吧,让我们开始一个过程,该过程将需要很长时间才能完成。我们将下载最新Linux内核的源代码,并将其重定向到一个名为 Latest_kernel.zip.

为此,我们键入以下内容:

curl //cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz> Latest_kernel.zip

我们的下载开始, 卷曲 输出向我们显示了进度。

我们无法显示下一张图片,因为它是按键序列。您键入Ctrl + A,释放这些键,然后按d分离屏幕。

下载过程仍在运行,但是显示下载的窗口已删除。您将返回到终端窗口,从该窗口启动 屏幕 会议。一条消息告诉您 屏幕 标有窗口的窗口 23167.pts-0.howtogeek 已超脱。

您需要从窗口名称开头的数字重新附加它。如果您忘记了它,可以随时使用 -ls (列表)选项,如下所示,以获取分离的窗口的列表:

屏幕-ls

准备好后,您可以使用 -r (重新附加)选项和重新附加会话的会话数,如下所示:

屏幕-r 23167

现在,一直在后台运行的窗口会像从未离开过一样返回到您的终端窗口。

如果这一过程将持续到得出结论,它将最终完成。如果这是一个连续的过程,那么您最终将要终止它。无论哪种方式,当过程结束时,您都可以输入出口 退出 屏幕。或者,您可以按Ctrl + A,然后按K强制杀死一个窗口。

输入以下命令:

出口

返回上一个终端窗口,该窗口仍会显示您用来重新连接该窗口的命令。因为我们关闭了一个唯一的分离窗口,所以我们收到一条消息, 屏幕 正在终止。

有关的:如何使用curl从Linux命令行下载文件

使用命名屏幕会话

您可以使用 -S (会话名称)选项来命名您的 屏幕 会议。如果您使用令人难忘的名称而不是会话的数字标识,则重新连接到会话会更方便。我们输入以下内容将会话命名为“ bigfile”:

屏幕-S bigfile

什么时候 屏幕 启动会话,我们将看到一个带有命令提示符的空白窗口。我们将下载一个大文件,因此我们可以使用一个长时间运行的过程作为示例。

我们输入以下内容:

curl //ipv4.download.thinkbroadband.com/1GB.zip> bigfile.zip

下载开始后,我们按Ctrl + A,然后按D断开会话。我们输入以下内容以使用 -ls (列表)选项 屏幕 查看我们的独立会议的详细信息:

屏幕-ls

在数字标识符(23266)的后面,我们看到了会话的名称(bigfile)。我们输入以下内容(包括会话名称)以重新附加它:

屏幕-r bigfile

重新连接到我们的下载窗口,可以看到长时间的下载仍在进行中。

下载完成后,我们输入 出口 关闭会话窗口。

在多个Windows上使用屏幕

到目前为止,我们已经使用了 屏幕 在后台将单个进程放置在一个分离的窗口中。然而,屏幕 有能力做更多的事情。接下来,我们将运行一些过程,使我们可以监视计算机的某些方面。

我们键入以下内容以启动名为“ monitor”的屏幕会话:

屏幕-S监视器

在新窗口会话的命令提示符下,我们将启动 dmesg 并使用 -H (人类可读)和 -w (等待新消息)选项。这将显示内核缓冲区消息;新消息将在出现时显示。

我们输入以下内容:

dmesg -H -w

出现现有消息。我们没有返回到命令提示符,因为 Dmseg 正在等待新消息,并在它们到达时显示它们。

有关的:如何在Linux上使用dmesg命令

我们想运行另一个应用程序,所以我们需要一个新的 屏幕 窗户。我们按Ctrl + A,然后按C创建一个新窗口。我们将使用 手表 反复运行 虚拟机,因此我们会经常更新计算机上虚拟内存使用情况的显示。

在新的命令提示符下,我们键入以下内容:

观看vmstat

虚拟机 出现输出,并每两秒钟更新一次。

我们的两个流程现在正在运行。在之间跳来跳去屏幕 窗口,请按Ctrl + A,然后按窗口编号。我们创建的第一个窗口是窗口零(0),下一个是窗口1,依此类推。跳到第一个窗口( dmesg 一),我们按Ctrl + A和0。

如果我们按Ctrl + A和1,则将我们带回到 虚拟机 窗户。

那真是太好了!我们可以按Ctrl + A,然后按D脱离此会话;我们可以稍后再附加。两个会话仍将运行。同样,要在窗口之间切换,请按Ctrl + A和要切换到的窗口编号(0或1)。

让我们转到下一步,并在一个窗口中查看两个屏幕。执行此操作时,将终端窗口拉伸到使此步骤有用的大小。我们的示例限于屏幕截图的大小,因此我们的窗口看起来有些局促。

为此,我们先按Ctrl + A,然后按Shift + S(必须使用大写字母“ S”)。

窗口分为两个“区域”。

顶部区域仍显示 虚拟机,底部区域为空白。光标在下面的屏幕快照中突出显示。要将其移至下部区域,请按Ctrl + A,然后按Tab。

光标移动到下部区域,它实际上只是一个空白区域。它不是外壳,因此我们无法在其中键入任何内容。要获得有用的显示,请按Ctrl + A,然后按“ 0”以显示 dmesg 该区域的窗口。

这使我们两个实时输出都在一个拆分窗口中。如果我们按Ctrl + A和D分离窗口,然后重新附加窗口,则将丢失拆分窗格视图。但是,我们可以使用以下键盘快捷键来还原它:

  • Ctrl + A,S: 水平拆分窗口。
  • Ctrl + A, 标签: 移至下部区域。
  • Ctrl + A,0: 在下部区域显示窗口零。

我们可以更进一步。现在,我们将垂直拆分下部窗格,并在显示中添加第三个过程。将光标放在下部区域中,我们按Ctrl + A和C组合键以创建一个带有外壳的新窗口。下部区域显示新窗口,并给我们一个命令提示符。

接下来,我们运行 df 检查文件系统使用情况的命令:

df

当我们看到 df 运行时,我们按Ctrl + A和管道字符 (|)。这将垂直分割下部区域。我们按Ctrl + A和Tab移到新区域。接下来,我们按Ctrl + A和0以显示 dmesg 窗户。

您还可以从一个区域移动到另一个区域,并添加更多垂直或水平分割。以下是一些更有用的组合键:

  • Ctrl + A: 在当前区域和先前区域之间来回跳动。
  • Ctrl + A,问: 关闭除当前区域以外的所有区域。
  • Ctrl + A,X: 关闭当前区域。

在SSH上使用屏幕

屏幕,您可以启动窗口会话,将其断开以使其仍在后台运行,然后注销或重新登录,然后重新连接该会话。

让我们通过另一台SSH连接从另一台计算机连接到我们的计算机ssh 命令。我们必须提供要连接的帐户名称和远程计算机的地址。

对于我们的示例,我们键入以下内容:

ssh [email protected]

在远程计算机上进行身份验证并登录后,我们键入以下内容来启动 屏幕 名为“ ssh-geek”的会话:

屏幕-S ssh-geek

出于演示目的,我们将运行最佳 在里面 屏幕 窗口,但您可以启动任何长时间运行或无休止的过程。

我们输入以下内容:

最佳

一次最佳 在窗口中运行,我们按Ctrl + A,然后按D断开窗口。

我们返回到原始的远程终端窗口。

如果我们输入 出口,如下所示,它断开了SSH会话的连接,然后我们又回到了本地计算机上:

出口

我们键入以下内容以重新连接:

ssh [email protected]

重新连接并登录后,我们可以输入以下内容重新连接 屏幕 会议:

屏幕-r ssh-geek

现在,我们重新连接到仍在运行的实例 最佳.

如果您想在一台机器上启动一个进程,然后在另一台机器上停下来的地方继续工作,那就太好了。

有关的:如何从Linux Shell创建和安装SSH密钥

共享屏幕会话

您也可以使用 屏幕 会话,以允许两个人看到相同的窗口并与之交互。假设某人在其计算机上运行Fedora想要连接到我们的Ubuntu服务器。

他将键入以下内容:

ssh [email protected]

连接后,他使用-S(会话名称)选项开始一个名为“ ssh-geek”的屏幕会话。他还使用 -d (分离)并-米 (强制创建)选项以创建新 屏幕 已分离的会话。

他键入以下内容:

屏幕-d -m -S ssh-geek

他使用 -X (多屏模式)选项来附加会话:

屏幕-X ssh-geek

在Manjaro计算机上,另一个人使用相同的帐户凭据连接到Ubuntu计算机,如下所示:

ssh [email protected]

连接后,她会输入屏幕 命令,并使用-X(多屏模式)选项加入相同的窗口会话,如下所示:

屏幕-X ssh-geek

现在,任何人键入任何内容,对方都会看到。例如,当一个人发出date命令时,他们都会看到键入的日期以及它的输出。

现在,两个人都共享一个 屏幕 远程Ubuntu计算机上运行的会话。

对于最初在1987年崭露头角的一款软件, 屏幕 仍然带来了良好的生产力。熟悉它会花费很多时间!

有关的:您应该知道的37个重要的Linux命令


$config[zx-auto] not found$config[zx-overlay] not found