如何从另一个SSH会话强制分离屏幕?

T. *_*nes 142 linux ssh terminal gnu-screen

我在一个SSH会话中运行了Screen.终端冻结了.重新启动终端后,该屏幕会话仍然认为它已附加.也许是.也许我真的不知道这意味着什么.

我想通过全新的SSH登录来附加屏幕会话.我不想杀死那个屏幕会话,因为那里发生了重要的事情.:)

我认为我有的选项(我都不知道如何解决):

  • 如何分离屏幕会话?
  • 如何杀死屏幕会话附加到的SSH会话?

小智 226

正如何塞回答的,screen -d -r应该这样做.这是两个命令的组合,如手册页所示.

screen -d分离已经运行的屏幕会话,并screen -r重新挂接现有会话.通过运行screen -d -r,强制屏幕将其分离,然后恢复会话.

如果你使用资本-D -RR,我引用手册页,因为它太好了,不能放弃.

随时随地附上.无论那意味着什么,就去做吧.

注意:通过"screen -list"检查会话状态总是一个好主意.

  • 记住"屏幕医生"; `screen -Dr` (9认同)
  • 你也可以做`screen -x`,它的输入速度更快,但并不完全等同.它将第二次附加会话而不首先分离,从而产生多显示模式. (3认同)

Jos*_*tin 43

尝试用screen -d -rscreen -D -RR

  • 如果这也不起作用怎么办? (2认同)

小智 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
Run Code Online (Sandbox Code Playgroud)

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

ENTER退出列表。

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

屏幕手册页摘录:

显示

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

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