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

时间:2013-12-27 20:53:55

标签: linux ssh terminal gnu-screen

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

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

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

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

3 个答案:

答案 0 :(得分:204)

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

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

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

  

立即加入此处。无论那意味着什么,只要这样做。

     
    

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

  

答案 1 :(得分:39)

尝试screen -d -rscreen -D -RR

答案 2 :(得分:4)

简短回答

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


解释性答案

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

  

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

  

注意显示也可以称为:

     
      
  • “用户前端” (在屏幕上的at命令手册中)
  •   
  • “客户端” (此功能为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退出列表。

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

摘录自屏幕手册页:

  

显示

     

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

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