分开当前会话,并附加到另一个会话,完成一个脚本,我可以吗?

在阅读了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屏幕的问题:

  • GNU屏幕,如何以编程方式获取当前会话名称
  • 创build后可以更改GNU屏幕会话名称吗?
  • 我怎么知道我正在运行一个Linux的“屏幕”或不?

我的环境: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更好的东西。