我在SSH会话中运行了Screen。终端冻结了。重新启动终端后,该Screen会话仍然认为它已经连接。也许是的。也许我不知道这意味着什么。
我想从新的SSH登录中附加到该Screen会话。我不想杀死该Screen会话,因为那里正在进行重要的事情。 :)
我认为我有以下选项(但我都不知道如何解决):
- 如何分离该Screen会话?
- 如何终止与该Screen会话连接的SSH会话?
我在SSH会话中运行了Screen。终端冻结了。重新启动终端后,该Screen会话仍然认为它已经连接。也许是的。也许我不知道这意味着什么。
我想从新的SSH登录中附加到该Screen会话。我不想杀死该Screen会话,因为那里正在进行重要的事情。 :)
我认为我有以下选项(但我都不知道如何解决):
正如Jose所回答的一样,screen -d -r
可以解决问题。这是从man页面获取的两个命令的组合。
screen -d
用于分离已经运行的screen会话,screen -r
用于重新连接现有的会话。通过运行screen -d -r
,你强制screen将其分离并恢复会话。
如果您使用大写的-D -RR
,我引用man页面,因为它太好了,不能错过。
立即在此处连接。不管这意味着什么,请执行它。
注意:始终通过“screen -list”检查会话的状态是一个好习惯。
screen -d -r
或 screen -D -RR
。screen -x
^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)
摘自screen手册页:
displays
显示所有当前连接的用户前端(显示器)的表格清单。这对于多用户会话最有用。以下键可以在显示列表中使用:
mouseclick
移动到所选行。当“mousetrack”设置为开启时可用。space
刷新列表d
分离该显示器D
强制分离该显示器C-g
、enter
或escape
退出列表
screen -x
命令,打字更快,但并非完全等效。它会在不先分离会话的情况下第二次附加会话,导致多显示模式。 - jlhscreen -Dr
的意思是恢复之前的 screen 会话。 - user5359531