如何使用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命令