【发布时间】:2010-10-03 06:19:00
【问题描述】:
添加:我相信这个问题现在被这个问题所包含: Using GNU Screen completely transparently and automatically
原问题:
如果有办法通过 ssh 连接到机器并立即重新连接到特定的屏幕会话,那就太好了。你可以这样做:
laptop> ssh server.com screen -ls
它会显示 server.com 上可用的屏幕列表,如下所示 [1]:
123.pts-1
456.pts-2
然后你可以尝试这样做:
laptop> ssh server.com screen -dr pts-2
但这失败了,说“必须连接到终端”。 您必须先 ssh 进入,然后在 server.com 上执行“screen -dr pts-2”,如果您的连接不稳定并且经常断开连接,这将是不好的。您希望能够在笔记本电脑上通过简单的“向上箭头输入”来恢复。 (或者也许让它更加自动化。)
我对这个问题有一个巧妙的解决方案,我将把它作为答案发布,并希望它被否决而被遗忘,以支持处理这个问题的正确方法。
脚注:
[1] 或者,如果您使用“screen -S foo”和“screen -S bar”之类的名称创建屏幕会话,那么您会得到一个更友好的列表,例如:
123.foo
456.bar
并且可以重新连接,例如“screen -dr foo”。
小屏教程,结合本题答案:
登录 server.com 并执行
screen -S foo
然后再也不会退出该会话。 要从其他地方重新连接到它,请执行
ssh -t server.com screen -dr foo
列出要重新连接的可用屏幕:
screen -ls
或者,当然,
ssh server.com screen -ls
远程检查 server.com 的可用屏幕。
我现在使用以下别名 (tcsh),根据 Jason 在下面的回答,连接到命名屏幕(如果存在)或创建并连接:
alias ssc 'ssh -t \!:1 "screen -S \!:2 -dr || screen -S \!:2"'
【问题讨论】:
标签: ssh scripting automation gnu-screen