GNU 屏幕 - 使用分屏恢复会话

GNU 屏幕 - 使用分屏恢复会话

当我恢复 的拆分会话时screen,我只有一个打印会话,并且必须重新配置显示会话的数量。

还有其他方法可以保留原始screen配置吗?

答案1

这不是现在无需破解即可实现(参见下一段);但是,执行此操作所需的功能已添加到 screen 的当前 git 树中。在未来的版本中,“布局保存”和“布局加载”命令不仅能够加载您最后的布局,还能够加载其他命名的布局。我相信也支持循环布局。

目前,诀窍是在屏幕内使用屏幕。所有的工作和布局更改都是在内部屏幕中完成的,但是当您分离时,您实际上是与最外层的屏幕分离。内部屏幕的布局将被保留。有关所有详细信息,请参阅以下内容:

当我分割显示器然后分离时,屏幕忘记了分割。

或者,您可以尝试直接从屏幕源代码树编译最新版本。您可以通过安装 git 然后运行来完成此操作:

git clone git://git.savannah.gnu.org/screen.git

然后,按照 src/INSTALL 中的说明进行操作。一般来说,方向是:

  1. ./autogen.sh
  2. ./configure
  3. make

安装文件中讨论了基于各种问题的有关屏幕安装位置的各种问题。如果您选择这条路线,最好的选择是阅读所有安装说明,然后继续。

答案2

油灰注意:如果您使用腻子,还请转到终端设置并检查以禁用终端的调整大小,保存设置,然后重新启动。

您有几个选项,具体取决于哪个选项对您的设置来说是合理的;

a) 如果您的版本超过 4.2,请使用 screen_layoutscreen -X dump layout

b) 如果你有 ~4.0x,请使用 hackhttp://aperiodic.net/screen/faq#when_i_split_the_display_and_then_detach_screen_forgets_the_split

这个黑客有点令人困惑,因为你必须仔细注意它不太清楚地指出你需要先启动一个标准屏幕,然后再启动带有 .screenrc 编辑的屏幕,因为会话不会保存这样的数据。

c) 编译并安装 http://savannah.gnu.org/forum/forum.php?forum_id=8293 http://www.linuxfromscratch.org/blfs/view/svn/general/screen.html

d) 应用补丁而不是重新安装(见下文)

e) 获取您的发行版的二进制文件,并将其放在您的路径中,以便它将覆盖系统默认的路径。

嗯,因为我知道只有一种选择是不够的。

关于上面的d),我找不到补丁了,所以我把它放在这里。

diff --git a/src/doc/screen.texinfo b/src/doc/screen.texinfo
index 6142de0..6fc8f9e 100644
--- a/src/doc/screen.texinfo
+++ b/src/doc/screen.texinfo
@@ -1040,6 +1040,8 @@ Show or set which layout to reattach to.  @xref{Layout}.
 Remember the organization of a layout.  @xref{Layout}.
 @item layout autosave [@var{on}|@var{off}]
 Show or set the status of layout saving.  @xref{Layout}.
+@item layout dump [filename]
+Save the layout arrangement to a file.  @xref{Layout}.
 @item license
 Display licensing information.  @xref{Startup}.
 @item lockscreen
@@ -2107,7 +2109,10 @@ the layout to reattach to will be shown in the message line.
 Remember the current arrangement of regions. When used, @code{screen}
 will remember the arrangement of vertically and horizontally split
 regions. This arrangement is restored when a @code{screen} session
-is reattached or switched back from a different layout. If a number
+is reattached or switched back from a different layout. If the 
+session ends or the @code{screen} process dies, the layout
+arrangements are lost. The @code{layout dump} command should help
+in this siutation. If a number
 or title is supplied, @code{screen} will remember the arrangement of
 that particular layout. Without any options, @code{screen} will
 remember the current layout.
@@ -2129,6 +2134,21 @@ a single window. Without either an @code{on} or an @code{off}, the
 current status is displayed on the message line.
 @end deffn

+@deffn Command layout @code{dump} [filename]
+(none)@*
+Write to a file the order of splits made in the current layout. This 
+is useful to recreate the order of your regions used in your current
+layout. Only the current layout is recorded. While the order of the
+regions are recorded, the sizes of those regions and which windows
+correspond to which regions are not. If no filename is specified,
+the default is @file{layout-dump}, saved in the directory that the
+@code{screen} process was started in. If the file already exists,
+@code{layout dump} will append to that file. As an example:
+@example
+layout dump /home/user/.screenrc
+@end example
+will save or append the layout to the user's @file{.screenrc} file.
+@end deffn

 @node Window Settings, Virtual Terminal, Regions, Top
 @chapter Window Settings

答案3

当我不小心按下了错误的组合键时,我遇到了这个问题,并且我的所有分屏都消失了。 :((

然而,至少对我来说有一条(卑微的)出路。由于我主要screenxtermbashshell 一起使用,所以我最不想拥有的是发射还有更多bashes。 (通过ps揭示bash过程来控制事物在那里,但无法访问。)

所以回到我通常的设置的方法是使用Ctrl+"并添加一个已经运行Ctrlshell 到每个分割窗口,使用+循环浏览“窗格” aTAB。所以我让事情恢复正常。
我发布此内容主要是因为我遇到过一些人,他们在沮丧中只是按下Ctrl+ac并“重新安装”了他们的bashes。但这是愚蠢的!对于这种方法,一天结束时您可能会得到 25 个bash进程,其中至少有 15 个进程无法访问/不可见,只是无缘无故地浪费资源和 CPU。所以重新使用他们,而不是重新创造他们。

答案4

分离之前:

[Ctrl]+[a]+[:] 然后输入layout dump .my_filename

现在您可以分离了。

重新连接后:

[Ctrl]+[a]+[:] 然后输入source .my_filename

来源:

https://linuxdigest.com/howto/gnu-screen-split-the-screen/https://www.gnu.org/software/screen/manual/html_node/Layout.html

相关内容