在阅读了GNU屏幕的模糊官方文档( http://www.gnu.org/software/screen/manual/screen.html )之后,在这个网站上询问了一些问题。 我仍然无法弄清楚如何用shell脚本完成这样的任务。 这个任务花费一些词来描述。
假设我使用PuTTY远程login到我的Linux服务器。
【步骤1】启动2个telnet连接。
从putty窗口1(PTWIN1),telnet到Linux Bash shell,执行screen -RR启动屏幕会话,并获得会话名称21385.pts-4.linux-ic37 。
从腻子窗口2(PTWIN2)开始,执行与PTWIN1中相同的操作,但是这次我得到会话名称22041.pts-9.linux-ic37 。
现在,我们有两个屏幕会话同时运行。 我们可以检查这个:
$ screen -ls There are screens on: 22041.pts-9.linux-ic37 (Attached) 21385.pts-4.linux-ic37 (Attached) 2 Sockets in /var/run/uscreens/S-chj2.
【第2步】
假设由于某种原因,PTWIN1的TCP连接exception丢失(但是服务器不知道),并且会话21385上的紧急工作正在等待,我想快速重新获得对它的控制权。 幸运的是,我们知道21385会话还在,因此,我想把PTWIN2附加到会话21385.因为我讨厌记得深奥的屏幕选项,所以我决定写一个名为sttach的脚本。
我希望
sttach 21385.pts-4.linux-ic37
可以让我附加到会话21385(对于PTWIN2)。
现在,让我们说sttach运作良好,我在PTWIN2上控制了21385。
【步骤3】
几分钟后。 我想回到工作22041会话。在这里,请允许我让PTWIN2保持与会话21385关联。我想要做的是启动另一个腻子窗口(PTWIN3),远程login到服务器,并执行
sttach 22041.pts-9.linux-ic37
希望能在PTWIN3上恢复会话22041。
你可以看到sttach的好处:只要我知道目标会话名称,我可以调用它让我的PuTTY窗口切换到该会话,无论目标会话是“(Attached)”还是“(Detached)”,而不pipe运行上下文是否在屏幕会话内。
现在的问题是:如何写(Bash)脚本sttach? 我的意思是,用适当的选项在屏幕上运行屏幕来完成目标。
等待你的亲切回答。 谢谢。
我之前有关GNU屏幕的问题:
我的环境:openSUSE Linux 11.3,GNU屏幕4.00.03(FAU)23-Oct-06
经过几天的努力,我放弃了。 我发现了更好的select,tmux。
tmuxfunction更强大,并采用了非常清晰的devise。
例如,要重命名当前会话,只需执行
tmux rename armcross
重命名一个外星人会议,就这样做
tmux rename -t oldname newname
– 不pipe它是分离还是附着。
要切换到另一个会话,只需执行:
tmux switch-client -t <targetsessionname>
– 无论目标会话处于连接状态还是分离状态,都不必知道当前的会话名称。
我只是演示了tmux的命令行用法; 交互使用,tmux也比
本书是关于tmux tmux的一个很好的教程:高效无鼠标开发
====一句话:
请不要因为我转向tmux而删除我的post。 这绝对是一个答案。 就像一个问题是关于十年前的Linux 2.2,但有人build议使用Linux 2.6可以很容易地解决这个问题。 不像有人说Windows可以做比Linux更好的东西。