如何使用 Linux Screen 命令 [基本指南]
Linux 中的 Screen 命令允许用户创建多个虚拟终端,可以通过名称保存并使用键盘快捷键重新打开。
您是否应该考虑使用屏幕来改善您的工作流程?让我们来看看您可能想尝试一下的一些原因。
如果您在终端上花费大量时间,您可能会发现自己同时使用多个终端来执行不同的任务。
例如,您可以通过 SSH 登录到远程服务器并在那里执行一些任务。同时,您可能希望在本地系统上工作时密切关注服务器上的 RAM 和 CPU 利用率。
使用 Screen,您可以通过一个“屏幕”完成所有操作。您可以将正在运行的进程和会话发送到后台,而无需中断当前的工作流程。
听起来不错?让我们进一步了解 Screen。
在你的 Linux 发行版上安装 Screen
首先,您需要查看您的 Linux 发行版中是否已包含此软件。许多现代发行版都包含它,但通常很容易安装。
您可以通过运行以下命令来检查它是否已安装:
screen --version
我使用的是 Pop OS,它是使用 apt 包管理器的 Debian 衍生发行版。默认情况下未安装 Screen,因此我将输入:
sudo apt install screen
如果您使用不同的包管理器,显然这个命令可能会有所不同。
屏幕中的按键绑定
Screen相当容易使用,但对于新用户来说仍然有点困惑,特别是因为它完全依赖于终端中的键盘快捷键。
我创建了一个表格来解释一些基本功能。您也可以访问键绑定屏幕来查看完整列表。
功能 | 捷径 |
---|---|
分离屏幕 | [ctrl + a] + d |
退出/关闭屏幕 | [ Ctrl + A ] + K |
切换到下一个 | [ Ctrl + A ] + N |
切换到上一个 | [ Ctrl + A ] + P |
所有按键绑定 | [ Ctrl + A ] + ? |
您不需要同时按下所有键。相反,您需要先按下 [ ctrl + a ],然后再按下the specified key
。
需要注意的是,这些快捷方式区分大小写。与 Linux 上的大多数东西一样,它们也可以自定义。这可以通过编辑.screenrc
通常可以在 中找到的文件来实现/etc/screenrc
。
如何在 Linux 中使用 Screen
我将以一种易于理解的线性方法介绍这些常见的管理任务。这将在您演示功能时有效地让您处于主导地位。
开始并命名会话
您可以启动屏幕并应用一个容易记住的名字。
screen -S top
对于此实例,我创建了一个名为 top 的会话(不要将其与命令 top 混淆,它可以被命名为任何名称)。它会自动启动命名的会话,这样我就可以完成我需要的任何任务。
我将启动 top 命令的一个实例。然后我将使用[ctrl + a] + d
键盘快捷键将其分离。Top 将继续在后台运行,但我将返回到屏幕应用程序。
从这里,我可以开始另一个会话。我们将其命名为“free”(因为我将在这里使用 free 命令,但它可以命名为任何名称,例如 session2 等)并输入:
watch free
将watch 命令与 free结合起来,可以让您持续监控 RAM 使用情况。
Every 2.0s: free pop-os: Sun Dec 22 02:25:32 2019
total used free shared buff/cache available
Mem: 32596848 5500212 22689952 894876 4406684 25801480
Swap: 0 0 0
再次使用键盘快捷键分离。这样,现在后台[ctrl + a] + d
有两个进程正在运行。
如何返回到您的流程来检查它们?我会向您解释。
快速重新连接
您可以使用会话名称通过选项 -r 轻松地重新连接屏幕。
screen -r free
您可以在上面看到这一点。如果您没有得到相同的结果,那么您可能在命名会话时犯了一个错误(或者完全忘记了)。这没什么好担心的。
列出屏幕上的所有会话
您可以使用以下命令列出所有打开的屏幕会话。
screen -ls
由于我再次分离了我的空闲会话来进入该会话,因此我得到了以下输出:
使用 PID 进行重新连接
如果您没有命名会话,它们将通过分配的 PID 和计算机 ID 来识别。您可以使用进程 ID (PID) 来访问所需的屏幕,就像对命名会话一样。
screen -r 685
这是与我命名为“免费”的屏幕关联的 PID。
关闭屏幕
好的,如果您按照说明操作,您应该已经打开了“免费会话”。让我们将其删除并阻止其运行。
您可以使用[ctrl + a]+ k
来关闭活动屏幕。左下角会出现一条带有确认提示的消息。输入y
退出会话。片刻之后,您将看到类似以下内容:
christopher@linux:~$ screen -r free
[screen is terminating]
您可以通过再次列出所有会话来确认-ls
。
如您所见,“免费屏幕会话”不再处于活动状态。
一次查看多个终端窗口
真正使屏幕不可或缺的是能够将终端在一个会话中分成水平或垂直排列的多个窗口。
Screen 将使用活动区域执行分割功能并创建屏幕功能。一旦创建分割,它将成为活动区域。但是,您可能会发现无法在活动窗口上输入任何内容。您需要创建一个屏幕才能做到这一点。您可以使用 初始化 shell [ctrl + a] + c
。
还有更多对于管理和导航终端窗口至关重要的键盘快捷键:
功能 | 捷径 |
---|---|
水平分割(左/右) | [ctrl+a]+S |
垂直分割(顶部/底部) | [ctrl+a]+| |
创建屏幕/启动 Shell | [ctrl+a]+c |
按窗口 ID 切换 | [ctrl+a]+0,1等。 |
重命名窗口 | [ctrl+a]+A |
关闭活动窗口 | [ctrl+a]+X |
关闭所有不活动的窗口 | [ctrl+a]+Q |
切换到下一个窗口 | [ctrl+a]+1 |
您可以自由地创建自己的安排并进行探索。您可以将其分成多个会话,但就我个人而言,我发现,超出象限的任何内容都会使文本难以阅读。
在表中,您可以看到重命名窗口的选项。这与您之前使用 执行的屏幕命名不同screen -S [name]
。您会注意到左下角有窗口名称。您可以通过输入 来获取窗口及其相应名称和 ID 的列表[ ctrl + a ] + ["]
。
请记住,您也可以在新窗口中使用之前探索过的所有功能。还有大量的可能性可供探索。
你喜欢屏幕吗?
使用 GNU Screen 自定义终端的方法有很多。当您通过命令行执行管理任务时,这是一种提高工作效率并使工作流程更简单的好方法。特别是当您在远程机器上工作时。
如果您是新手,请给我们留言,让我们知道您是否喜欢本教程。如果您更有经验,请随时与其他读者分享您的一些常用设置。我们喜欢读者的反馈。