APP下载

screen 命令示例:管理多个终端会话

消息来源:baojiabao.com 作者: 发布时间:2024-05-17

报价宝综合消息screen 命令示例:管理多个终端会话

顾名思义,Screen 可以在多个互动式 shell 之间复用物理终端,因此我们可以在每个终端会话中执行不同的任务。所有的 Screen 会话都完全独立地执行程式。

-- Sk(作者)

GNU Screen 是一个终端多路复用器(视窗管理器)。顾名思义,Screen 可以在多个互动式 shell 之间复用物理终端,因此我们可以在每个终端会话中执行不同的任务。所有的 Screen 会话都完全独立地执行程式。因此,即使会话意外关闭或断开连线,在 Screen 会话内执行的程式或程序也将继续执行。例如,当通过 SSH 升级 Ubuntu 服务器时,screen 命令将继续执行升级过程,以防万一 SSH 会话因任何原因而终止。

GNU Screen 允许我们轻松建立多个 Screen 会话,在不同会话之间切换,在会话之间复制文字,随时连上或脱离会话等等。它是每个 Linux 管理员应该在必要时学习和使用的重要命令列工具之一。在本简要指南中,我们将看到 screen 命令的基本用法以及在 Linux 中的示例。

安装 GNU Screen

GNU Screen 在大多数 Linux 操作系统的预设储存库中都可用。

要在 Arch Linux 上安装 GNU Screen,请执行:

$ sudo pacman -S screen

在 Debian、Ubuntu、Linux Mint 上:

$ sudo apt-get install screen

在 Fedora 上:

$ sudo dnf install screen

在 RHEL、CentOS 上:

$ sudo yum install screen

在 SUSE/openSUSE 上:

$ sudo zypper install screen

让我们继续看一些 screen 命令示例。

管理多个终端会话的 Screen 命令示例

在 Screen 中所有命令的预设字首快捷方式是 Ctrl + a。使用 Screen 时,你需要经常使用此快捷方式。所以,要记住这个键盘快捷键。

建立新的 Screen 会话

让我们建立一个新的 Screen 会话并连上它。为此,请在终端中键入以下命令:

screen

现在,在此会话中执行任何程式或程序,即使你与此会话断开连线,正在执行的程序或程式也将继续执行。

从 Screen 会话脱离

要从屏幕会话中脱离,请按 Ctrl + a 和 d。你无需同时按下两个组合键。首先按 Ctrl + a 然后按 d。从会话中脱离后,你将看到类似下面的输出。

[detached from 29149.pts-0.sk]

这里,29149 是 Screen ID,pts-0.sk 是屏幕会话的名称。你可以使用 Screen ID 或相应的会话名称来连上、脱离和终止屏幕会话。

建立命名会话

你还可以用你选择的任何自定义名称建立一个 Screen 会话,而不是预设使用者名称,如下所示。

screen -S ostechnix

上面的命令将建立一个名为 xxxxx.ostechnix 的新 Screen 会话,并立即连上它。要从当前会话中脱离,请按 Ctrl + a,然后按 d。

当你想要查询哪些程序在哪些会话上执行时,命名会话会很有用。例如,当在会话中设定 LAMP 系统时,你可以简单地将其命名为如下所示。

screen -S lampstack

建立脱离的会话

有时,你可能想要建立一个会话,但不希望自动连上该会话。在这种情况下,执行以下命令来建立名为senthil 的已脱离会话:

screen -S senthil -d -m

也可以缩短为:

screen -dmS senthil

上面的命令将建立一个名为 senthil 的会话,但不会连上它。

列出屏幕会话

要列出所有正在执行的会话(连上的或脱离的),请执行:

screen -ls

示例输出:

There are screens on:

29700.senthil (Detached)

29415.ostechnix (Detached)

29149.pts-0.sk (Detached)

3 Sockets in /run/screens/S-sk.

如你所见,我有三个正在执行的会话,并且所有会话都已脱离。

连上 Screen 会话

如果你想连上会话,例如 29415.ostechnix,只需执行:

screen -r 29415.ostechnix

或:

screen -r ostechnix

或使用 Screen ID:

screen -r 29415

要验证我们是否连上到上述会话,只需列出开启的会话并检查。

screen -ls

示例输出:

There are screens on:

29700.senthil (Detached)

29415.ostechnix (Attached)

29149.pts-0.sk (Detached)

3 Sockets in /run/screens/S-sk.

如你所见,在上面的输出中,我们目前已连上到 29415.ostechnix 会话。要退出当前会话,请按 ctrl + a d。

建立巢状会话

当我们执行 screen 命令时,它将为我们建立一个会话。但是,我们可以建立巢状会话(会话内的会话)。

首先,建立一个新会话或连上已开启的会话。然后我将建立一个名为 nested 的新会话。

screen -S nested

现在,在会话中按 Ctrl + a 和 c 建立另一个会话。只需重复此操作即可建立任意数量的巢状 Screen 会话。每个会话都将分配一个号码。号码将从 0 开始。

你可以按 Ctrl + n 移动到下一个会话,然后按 Ctrl + p 移动到上一个会话。

以下是管理巢状会话的重要键盘快捷键列表。

Ctrl + a " - 列出所有会话Ctrl + a 0 - 切换到会话号 0Ctrl + a n - 切换到下一个会话Ctrl + a p - 切换到上一个会话Ctrl + a S - 将当前区域水平分割为两个区域Ctrl + a l - 将当前区域垂直分割为两个区域Ctrl + a Q - 关闭除当前会话之外的所有会话Ctrl + a X - 关闭当前会话Ctrl + a - 终止所有会话并终止 ScreenCtrl + a ? - 显示键系结。要退出,请按回车 #### 锁定会话Screen 有一个锁定会话的选项。为此,请按 Ctrl + a 和 x。 输入你的 Linux 密码以锁定。

Screen used by sk on ubuntuserver.

Password:

记录会话

你可能希望记录 Screen 会话中的所有内容。为此,只需按 Ctrl + a 和 H 即可。

或者,你也可以使用 -L 引数启动新会话来启用日志记录。

screen -L

从现在开始,你在会话中做的所有活动都将记录并存储在 $HOME 目录中名为 screenlog.x 的档案中。这里,x 是一个数字。

你可以使用 cat 命令或任何文字检视器检视日志档案的内容。

记录 Screen 会话

终止 Screen 会话

如果不再需要会话,只需杀死它。要杀死名为 senthil 的脱离会话:

screen -r senthil -X quit

或:

screen -X -S senthil quit

或:

screen -X -S 29415 quit

如果没有开启的会话,你将看到以下输出:

$ screen -ls

No Sockets found in /run/screens/S-sk.

更多细节请参照 man 手册页:

$ man screen

还有一个名为 Tmux 的类似的命令列实用程式,它与 GNU Screen 执行相同的工作。要了解更多资讯,请参阅以下指南。

Tmux 命令示例:管理多个终端会话

资源

GNU Screen 主页via: https://www.ostechnix.com/screen-command-examples-to-manage-multiple-terminal-sessions/

作者: sk 选题: lujun9972 译者: wxy 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

点选“了解更多”可访问文内连结

2020-01-13 07:51:00

相关文章