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

Posted

技术标签:

【中文标题】如何强制从另一个 SSH 会话中分离屏幕?【英文标题】:How do I force detach Screen from another SSH session? 【发布时间】:2014-01-15 11:00:57 【问题描述】:

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

我想从新的 SSH 登录附加到该屏幕会话。我不想终止那个 Screen 会话,因为那里正在发生重要的事情。 :)

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

如何分离 Screen 会话? 如何终止与 Screen 会话连接的 SSH 会话?

【问题讨论】:

【参考方案1】:

正如 Jose 回答的那样,screen -d -r 应该可以解决问题。这是两个命令的组合,取自手册页。

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

如果您使用大写字母-D -RR,我会引用手册页,因为它太好了,不能放弃。

现在附上。不管这意味着什么,去做吧。

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

【讨论】:

您也可以使用screen -x,这样打字速度更快,但并不完全等同。它将第二次附加会话而不先分离,从而导致多显示模式。 记住“屏幕医生”; screen -Dr【参考方案2】:

试试screen -d -rscreen -D -RR

【讨论】:

【参考方案3】:

简答

    在不弹出其他人的情况下重新连接:screen -x 获取显示器列表:^A*,选择要断开的显示器,按d


解释答案

背景:当我在寻找具有相同问题描述的解决方案时,我总是得到这个答案。我想提供更明智的解决方案。 (例如:另一个附加屏幕的大小不同,我无法在终端中强制调整它的大小。)

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

注意:display也可以叫做:

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

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 退出列表。

可选:为了使内容适合您的屏幕,重排PREFIXF(大写 F)

摘自屏幕手册页:

展示

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

mouseclick 移动到选定的行。当“mousetrack”设置为开启时可用。 space刷新列表 d 分离显示 D 电源断开显示器 C-genterescape 退出列表

【讨论】:

以上是关于如何强制从另一个 SSH 会话中分离屏幕?的主要内容,如果未能解决你的问题,请参考以下文章

android如何强制cpu核心离线(关闭核心)

从另一个屏幕会话中启动屏幕会话

如何强制事件跟踪会话更频繁地刷新数据?

ABAP中如何实现强制分页/如何设置打印机和打印格式?

如何在函数内部强制 COMMIT 以便其他会话可以看到更新的行?

如何从 R 中的特定包中分离所有对象和方法? [复制]