如何检查您是否在屏幕会话中或不在 Linux 中

这个简短的指南解释了如何检查你是否在 屏幕 会话与否在 Linux 中。 您可能已经注意到,当您启动一个 多路复用器 session,你会在底部的状态栏中明显看到 session 的详细信息,例如当前的 SHELL 名称、主机名和当前日期和时间,如下图所示。

Tmux 会话详细信息

但是,当您在 Screen 会话中时,您不会看到此类详细信息。 这是屏幕会话在我的 Ubuntu 系统上的样子:

屏幕会话

您看得出来差别吗? 屏幕会话和正常会话看起来完全一样。 让我们运行“screen -ls”命令来列出正在运行的屏幕会话。

$ screen -ls

样本输出:

列出屏幕会话

列出屏幕会话

看? 我在屏幕会话中,但它看起来像正常会话。 底部的状态栏中没有任何指示。 您如何知道您是否在 Screen 会话中工作? 这就是我们现在要发现的。

检查您是否在屏幕会话中或不在 Linux 中

有几种方法可以验证我们是否在 Screen 会话中。 这里我给出了三种方法。

方法 1 – 使用“echo”命令

要检查您是否处于 Screen 会话中,只需运行以下命令:

$ echo $STY

如果您在 Screen 会话中,您将看到如下输出。

18704.pts-0.ostechnix

这是检查您是否在 Screen 会话中的另一种方法:

$ echo $TERM

你会看到术语 “屏幕” 在输出中。

样本输出:

screen.xterm-256color

检查您是否在 Linux 中的屏幕会话中

检查您是否在 Linux 中的屏幕会话中

如果没有正在运行的屏幕会话,您将看不到第一个命令。 对于第二个命令,输出中不会出现“屏幕”一词。 只需退出或从屏幕会话中分离并再次运行上述命令。 您将看到如下所示的输出。

检查屏幕会话

检查屏幕会话

看? 我们不在 Screen 会话中。

仅当您处于本地系统上的正在运行的屏幕会话中时,上述两个命令才有效。 如果您在本地系统中启动 Screen 会话,然后通过 SSH 访问网络上的其他系统,它将无法工作。

在这种情况下,您可以使用下面给出的第二种方法。

方法 2 – 使用屏幕前缀键

要检查我们是否在屏幕会话中,只需按 Ctrl+a 进而 Ctrl+t 键。 如果您在 Screen 会话中,这将显示时间和主机名。

看看下面的演示。

使用 Screen 前缀键检查您是否在 Screen 会话中

使用 Screen 前缀键检查您是否在 Screen 会话中

正如您在上面的输出中一样,

  • 首先,我启动了一个 Screen 会话并按 Ctrl+a 和 Ctrl+t 键来检查我是否在 Screen 会话中。
  • 然后我通过按从屏幕会话中分离出来 Ctrl+ad.
  • 最后我重新连接到 Screen 会话并按 Ctrl+a 和 Ctrl+t 再次检查我是否在 Screen 会话中。

即使您已通过 SSH 连接到其他地方,此方法也可以使用。

方法 3 – 使用 Caption 命令

如果你不喜欢每次都按键,你可以在你的 ~/.screenrc 文件。 如果此文件不可用,只需创建它。

$ nano ~/.screenrc

添加代码:

caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"

Save 和 close 文件。

从现在开始,每当您启动 Screen 会话时,您都会在终端窗口底部看到一个小通知栏(包括主机名、时间和日期、系统负载等),如下所示。

Screen session on ubuntuserver (system load: 0.00 0.00 0.00)        Sat 22.02.2020 12:37

使用 Caption 命令在终端窗口底部显示屏幕会话详细信息

使用 Caption 命令在终端窗口底部显示屏幕会话详细信息

此通知栏将在您退出 Screen 会话后消失。

方法 4 – 为 Screen 会话设置不同的 Bash 提示

这是另一种使 Screen 会话易于识别的方法,方法是在 ~/.bashrc 文件。 其实这不是推荐的方法. 如果像 zsh 这样的其他 shell 继承了您当前的 shell,可能会导致许多不必要的问题。 这仅用于教育目的。 需要您自担风险使用它!

首先,备份您当前的 ~/.bashrc 文件:

$ cp ~/.bashrc ~/.bashrc.bak

只需为普通会话和屏幕会话设置不同的 Bash 提示名称,如下所示。 为了 example 我在我的 ~/.bashrc 文件。

if [ -z $STY ]
then
        PS1="This is normal session:~$ "
else
        PS1="This is Screen session:~$ "
fi

注销并重新登录。当您在正常会话和屏幕会话之间切换时,您的终端提示名称将根据您的设置进行更改。

为 Screen 会话设置不同的 Bash 提示

为 Screen 会话设置不同的 Bash 提示

同样,更改 Bash 提示名称不是一个好习惯。 相反,只需使用上述任何一种方法来检查您是否处于 Screen 会话中。

相关阅读:

  • 如何在 Linux 中自定义 Bash 提示

希望这可以帮助。

资源:

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!