如何强制将Screen与另一个SSH会话分离?


158

我在SSH会话中运行Screen。终端冻结。重新启动终端后,该Screen会话仍认为已连接。也许是。也许我真的不知道那意味着什么。

我想通过新的SSH登录名附加到该Screen会话。我不想终止该Screen会话,因为那边正在发生重要的事情。:)

我认为我可以使用的选项(我都不知道如何解决):

  • 如何分离该Screen会话?
  • 如何终止该Screen会话所连接的SSH会话?

Answers:


252

正如何塞回答的那样,screen -d -r应该做到这一点。这是从手册页中获取的两个命令的组合。

screen -d分离已经在运行的屏幕会话,然后screen -r重新连接现有的会话。通过运行screen -d -r,您可以强制屏幕分离它,然后恢复会话。

如果使用大写字母-D -RR,请引用手册页,因为它太好了而无法传递。

现在就附上。不管这意味着什么,只需执行即可。

注意:最好通过“ screen -list”检查会话的状态。


3
您也可以screen -x键入更快,但不完全相同的方法。它将第二次连接会话而不先断开连接,从而形成多显示模式。
jlh

10
记住“屏幕医生”;screen -Dr
user5359531


6

简短答案

  1. 重新连接而不弹出其他对象: screen -x
  2. 获取显示列表:^A *,选择要断开的显示,然后按d


解释答案

背景:当我寻找具有相同问题描述的解决方案时,我总是着迷于此答案。我想提供更明智的解决方案。(例如:另一个连接的屏幕具有不同的大小,并且我无法在终端中强制调整其大小。)

注意: PREFIX通常是^A=ctrl+a

注:显示器也可以称为:

  • “用户前端”at在屏幕命令手册中)
  • “客户端”(此功能所在的tmux词汇表detach-client
  • “终端”(在用户界面中称为窗口)/取决于

1.重新附加会话screen -x

-x附加到未分离的屏幕会话而不分离它

2.列出此会话的显示PREFIX *

这是默认的键绑定:PREFIX :displays。在屏幕上执行该操作,确定我们要断开的其他显示器(例如,较小的尺寸)。(未选择时,您当前的显示将以较亮的颜色/粗体显示)。

term-type   size         user interface           window       Perms
---------- ------- ---------- ----------------- ----------     -----
 screen     240x60         you@/dev/pts/2      nb  0(zsh)        rwx
 screen      78x40         you@/dev/pts/0      nb  0(zsh)        rwx

使用箭头 ,选择目标显示,然后按d 如果没有任何反应,则您尝试分离自己的显示,但屏幕不会分离。如果是另一个,则在一两秒钟内,该条目将消失。

ENTER退出列表。

可选:为了使内容适合您的屏幕,回流焊PREFIX F(大写F)

摘录自屏幕手册:

显示

以表格形式列出所有当前连接的用户前端(显示)。这对于多用户会话最有用。可以在显示列表中使用以下键:

  • mouseclick移至所选行。当“ mousetrack”设置为开时可用。
  • space 刷新列表
  • d 拆下显示器
  • D 电源分离显示
  • C-genterescape退出列表

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.