使GNU屏幕幸免于重启


18

我经常使用GNU屏幕。我感到非常烦人,每次必须重新启动服务器时,我都会丢失所有会话(即使我事先知道,也需要重新设置所有内容)。

我在网上搜索了如何使屏幕在重启后不受影响的可能性,但没有找到适合我的方法。我发现的一些方法存在缺陷:

  • CryoPID:似乎已经死了,自2005年以来就承诺包括对屏幕的支持
  • DMCTP:setuid()有问题,对我不起作用(我承认我并没有很努力)
  • 一些脚本试图从头开始重新创建会话;您仍然会丢失历史记录,而且我认为环境变量的设置也没有正确设置(当我尝试使用它时,并没有打开所有会话)

也许有人知道更好的冷冻程序?这似乎是最有前途的方法。


也许您应该休眠而不是重新启动:-)我记得很久很久以前使用DMCTP了,并且它起作用了(IIRC,但我不确定...)
懒惰

1
好吧,在大多数情况下,它的内核更新或硬件更换会导致重启。(无论如何,这都不由我决定...)-DMCTP:对如何使其无需重新编译屏幕即可工作(如Internet上的建议)感兴趣。
fuenfundachtzig 2010年

1
我使用的是tmux而不是屏幕,发现编写会话脚本更加容易。这不会“保存”您的会话,但是您可以轻松地将命令发送到tmux进行布局,并将“按键”发送给客户端,以便您可以更改目录并在需要时启动应用程序。我敢肯定您也可以在屏幕上进行操作,但是使用tmux似乎更容易

Answers:


13

无法以您希望的方式保存屏幕会话。接下来我要做的是最好的事情:编写脚本化的autossh以连接到我的服务器并按照自己喜欢的方式设置我的装备。

爱它。

本地连接断开,我等待,它重新启动,这是我的工作(我使用嵌套屏幕)。服务器关闭或重新启动,我等待,然后回到默认位置。这给了我想要的连续感。

无论如何,我几年前在屏幕列表上问了这个确切的问题。

摘要:不要为屏幕寻求永生。相反,要学会复活。

这是.screenrc配置的内容:

我修改为econnect程序的autossh包中有一个示例rscreen。

--esc参数用于将远程屏幕转义设置为其他内容(我的转义是`)

#add much much more scrollback
defscrollback 10000

# make some default windows

screen -t ADMIN     1
chdir /Users/chiggsy/Sites/
screen -t SITES    2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS  4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5  /Users/chiggsy/bin/econnect --host host.example2.com --port 505000  --esc g --user invictus

screen -t ROOT      0   sudo su -m

2

参见:http : //skoneka.github.io/screen-session/

Available screen-session modes: 

---- 
save              - save Screen ( and VIM ) session 
load              - load session 
ls                - list saved sessions 
---- 

dump              - print detailed informations about windows in the session 
group             - move windows to a group 
layoutlist        - display a list of layouts 
layout-checkpoint - record a snapshot of the current layout. 
layout-history    - display saved snapshots of the current layout 
layout-redo       - load a snapshot of the current layout, 
layout-undo       - load a snapshot of the current layout, 
layout-zoom       - zoom into and out of a region 
kill              - send SIGTERM to last the process started in a window 
kill-zombie       - kill all zombie windows in the session 
kill-group        - recursively kill all windows in a group 
manager           - sessions manager (screenie like) but featuring session 
                    preview in a split window 
nest-layout       - copy a layout to the current region 
new-window        - start a new Screen window in the same working directory 
                    on the position next to the current window 
name              - get or set the sessionname 
regions           - display a number in every region (like tmux display-panes) 
renumber          - renumber windows to fill gaps 
subwindows        - recursively print windows contained in groups 

2

在“服务器故障”上,相同的问题收到一个提示,此处缺少该提示:tmuxtmux-resurrect一起使用,即:

tmux系统重启后恢复环境。

它可以为您恢复什么:

  • 所有会话,窗口,窗格及其顺序
  • 每个窗格的当前工作目录
  • 窗口内精确的窗格布局(即使缩放)
  • 活动和替代会话
  • 每个会话的活动和备用窗口
  • 焦点窗口
  • 每个窗口的活动窗格
  • “分组的会话”(将tmux与多个监视器一起使用时的有用功能)
  • 程序在窗格中运行!恢复程序doc中的更多详细信息。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.