screen最好的特性之一是它能够从整个会话中分离出来——让所有的windows和程序运行——然后重新连接。
但是,在登录时很容易忘记重新连接,因此配置shell环境很有帮助,以便在登录时自动重新连接到会话。幸运的是,screen提供了一些命令行选项,使得实现这个目标变得非常简单。
在配置shell环境之前,让我们更详细地了解一下分离。要分离一个屏幕会话,输入C-a - d。因为可以在同一台主机上运行和分离多个会话,所以有一种方法可以列出所有已连接和已分离的会话。
要查看列表,输入screen -ls。这将产生类似以下的输出:
屏幕- ls美元
屏幕上有:
1878. ttyp1。examplehost(附加)
2983. ttyp2。examplehost(分离)
2个插座/tmp/uscreens/S-btanaka。
正如您在这个示例中看到的,我正在运行两个屏幕会话。一个是附着的,另一个是分离的。
我通常从各种不同的机器ssh到我的主机。如果我想在每次登录时自动重新连接到屏幕会话,我可以采用两种策略。一种方法简单但有效。另一个稍微高级一些。
我们先来看一个简单的例子。screen-r的默认行为是重新连接到一个分离的进程。如果因为没有分离会话,或者有多个分离会话,或者所有会话都已附加,所以它不能执行此操作,那么它只报告失败,列出会话和退出。这是一种理智而保守的行为,因此我们可以安全地将其添加到$HOME/中。配置文件(假设您正在使用sh或zsh)或$HOME/。bash_profile(如果您使用bash),如下所示:
自动重新连接到任何单独的、分离的屏幕会话。
#如果不能重新连接,列出会话和提示用户。
屏幕- r
当您登录时,screen -r将尝试重新连接。如果失败,您将看到原因和会话列表,并将看到一个新的shell提示符。屏幕将不会重新连接,也不会启动新会话。
更高级的情况更复杂一些。它还试图重新连接到一个单独的、分离的会话,但如果失败,它将采取进一步的操作。如果它在其他地方找到一个附加的会话,它就会分离会话并重新附加到您的当前终端。如果您在离开工作时附加了会话,然后希望在从家里ssh进来时附加会话,那么这是非常方便的。此外,如果没有要重新附加的会话,它将创建一个新会话。要使用此解决方案,请添加以下行:
如果可能,重新连接到一个现有会话并分离该会话
#。如果不可能,创建一个新会话。
if [-z "$STY"];然后
执行屏幕是
fi
本文“自动重新连接到屏幕会话”最初由LinuxWorld——(美国) 。