使 GNU screen 在重启后继续存在

使 GNU screen 在重启后继续存在

我经常使用 GNU screen。每次服务器重新启动时,我都会丢失所有会话(即使我事先知道,我也需要重新设置一切),这让我很恼火。

我在网上搜索了如何让屏幕在重启后继续存在的方法,但没有找到适合我的方法。我发现的一些方法及其缺陷:

  • 低温PID:似乎已经死了,自 2005 年以来承诺包括对屏幕的支持
  • 二甲基碳三烯丙基氯化铵:setuid() 有问题,对我来说不起作用(我承认我没有很努力)
  • 一些脚本尝试从头开始重新创建会话;您仍然会丢失历史记录,而且我认为环境变量也未正确设置(当我尝试时,它并没有启动所有会话)

也许有人知道更好的工艺冷冻机?这似乎是最有希望的方法。

答案1

没有办法以您想要的方式保存屏幕会话。我做的是第二好的事情:编写脚本 autossh 连接到我的服务器并按照我喜欢的方式设置我的设备。

爱它。

本地连接断开,我等待,然后连接恢复,然后我的工作就完成了(我使用嵌套屏幕)。服务器关闭或重新启动,我等待,然后回到我的默认位置。这给了我所期望的连续感。

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

摘要:不要为了屏幕而寻求永生。而要学会复活。

这是 .screenrc 配置的核心:

autossh 包中有一个例子,rscreen,我把它修改成了 econnect 程序。

--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 

答案3

服务器故障时,同一个问题已经收到了这里缺少的一个提示:tmux使用tmux-复活,即:

系统重启后恢复tmux环境。

它可以为您恢复:

  • 所有会话、窗口、窗格及其顺序
  • 每个窗格的当前工作目录
  • 窗口内的精确窗格布局(即使缩放)
  • 活动会话和替代会话
  • 每个会话的活动窗口和备用窗口
  • 具有焦点的窗口
  • 每个窗口的活动窗格
  • “分组会话”(使用带有多个显示器的 tmux 时很有用的功能)
  • 窗格中正在运行的程序!更多详细信息请参见恢复程序 doc

相关内容