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

问题描述 投票:0回答:4

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

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

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

  • 如何分离该屏幕会话?
  • 如何终止该 Screen 会话所附加的 SSH 会话?
linux ssh terminal gnu-screen
4个回答
363
投票

正如何塞回答的那样,

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

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

如果你使用大写字母

-D -RR
,我会引用手册页,因为它太好了,不容错过。

立即附上。不管这意味着什么,就去做吧。

注意:通过“屏幕列表”检查会话状态始终是个好主意。


64
投票

尝试使用

screen -d -r
screen -D -RR


15
投票

简短回答

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


解释答案

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

注意:

PREFIX
通常是
^A
=
ctrl+a

注意: 显示也可称为:

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

1。重新附加会话

screen -x

-x
附加到未分离的屏幕会话 无需分离它

2。此会话的列表显示

PREFIX
*

它是默认键绑定:

PREFIX
:displays
。 在屏幕内执行此操作,识别我们想要断开连接的其他display(例如较小的尺寸)。 (未选择时,您当前的显示将以更亮的颜色/粗体显示)。

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-g
    enter
    escape
    退出列表

0
投票
screen -XS '会话名称'退出

基本原理:-X = 执行命令,-S 要执行的会话 PID

© www.soinside.com 2019 - 2024. All rights reserved.