ssh 登录时自动启动屏幕

Ron*_*gan 25 linux ssh gnu-screen

我一直在阅读有关如何在ssh访问远程服务器时自动启动屏幕的信息。我想要一个简单的单线添加到我的.bash_profilescreen当我进入时开始ssh,并且在我分离屏幕时不退出我的远程连接。

我一直在寻找到exec screen和几乎每一个组合-d-r-D-R和无法弄清楚,我需要什么标志。

理想情况下,我会ssh whatever以新的方式输入并登录到服务器,screen或者它可以重新连接旧屏幕,我想知道如何同时进行以查看我更喜欢哪个。然后我可以输入Ctrl adCtrl d让它带我回到ssh该服务器的正常登录(在那里你会看到motd)。从那里我可以screen -r回到我想要的任何屏幕,或者Ctrl d再次点击退出。

小智 19

一个简单的screen -R应该可以解决问题。

为了验证这一点,我screen -R在远程服务器上添加了我的 .bash_profile,登录,从屏幕上分离,然后回到远程服务器上的正常 shell 提示。也用 .bashrc 验证。随后的登录产生了预期的结果(重新附加到屏幕会话)。


小智 15

screen -RR 将重新附加到第一个可用会话或在必要时创建一个。


小智 15

在启动新窗口或屏幕会话时,我遇到了使用某些解决方案创建的 40 个级联屏幕会话的问题。如果不存在级联屏幕,我能够消除级联屏幕并创建一个新会话:

if [ -z "$STY" ]; then screen -R; fi
Run Code Online (Sandbox Code Playgroud)

它测试您是否在屏幕会话中,screen -R如果您不在,则运行。没有测试你会得到“从屏幕内部连接?” 每次创建新的屏幕窗口时都会从屏幕发出警告。


Ton*_*ony 8

如果我了解您的需求,您应该尝试:

if $(screen -ls | grep -q pts); then screen -x; else screen -R; fi

它将只创建一个屏幕会话,否则它将以多窗口方式重新连接到现有会话(即使您有多个 ssh 会话,您最终也会进入同一个屏幕会话)

  • 所有这些都可以用`screen -xR`代替,它似乎被解析为“如果有东西要附加,则附加,否则创建新屏幕”。 (4认同)