补充说明:我相信这个问题现在已经被这个问题所包含: 如何完全透明而自动地使用GNU Screen
还可以参考以下相关问题:
https://superuser.com/questions/147873/ssh-sessions-in-xterms-freeze-for-many-minutes-whenever-they-disconnect
原始问题:
如果有一种方法可以通过ssh连接到一个机器并立即重新连接到特定的screen会话,那将是很好的。你可以这样做:
laptop> ssh server.com screen -ls
这会显示一个可用于 server.com 上的屏幕列表,如下所示 [1]:
123.pts-1
456.pts-2
然后,您可以尝试这样做:
laptop> ssh server.com screen -dr pts-2
但是这样会失败,并显示“必须连接到终端”。
您必须先通过ssh访问服务器,然后执行“screen -dr pts-2”,如果连接不稳定经常断开,则无法做到这一点。 您希望能够使用简单的“上箭头 回车”在笔记本电脑上恢复(或者更加自动化)。
我有一个神奇的解决方案,我将它发布为答案,并希望它被否决,以支持正确的解决方案。
注释:
[1] 或者更好的方法是,如果您像 "
screen -S foo
" 和 "screen -S bar
" 这样命名了 screen 会话,那么您将得到一个更友好的列表: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"'