我经常使用 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