有没有简单的方法可以“重新启动” tmux窗格?


47

假设我有一个tmux(1.7)窗口,如下所示:

 ________________________
|           1            |
|                        |
|-----------+------------|
|     2     |      3     |
|___________|____________|

现在,垂直尺寸已经过自定义,因此绝不是默认布局之一。

有时,当程序卡住或重新引导通过进行连接的计算机时ssh,窗格将“挂起”。也就是说,除了kill-pane看起来可行之外,别无其他。

但是,由于没有简单的方法可以在窗格#1被创建后在拆分配置之上进行重建kill-pane,因此我想“重新启动”它。

Answers:


81

看着手册,命令respawn-pane打动了我,但事实证明这行不通。仔细阅读后,发现这respawn-pane -k就是答案,因为它会杀死正在运行的命令。

这样,可以“重新启动”窗格并重新生成新窗格。

所以<prefix>+ :然后输入respawn-pane -k并按Enter


4
或者,-k如果您在remain-on-exit模式下创建窗格并自己杀死了命令,则使用no​​。
彼得

阿们,您已经被重新产卵了
凌晨

4

实际上,有一种方法可以重建布局- list-windows为会话中的所有窗口提供布局描述,并select-layout可以摘要分析字符串并适当地设置布局(请参见select-layout手册页tmux(1))。

至于您的ssh问题-系统关闭后,ssh服务器应关闭连接(尽管我已经看到了一些Linux发行版,它们通过不关闭ssh守护进程并正确运行会话而以某种方式弄乱了正确的行为)-如果是这种情况,看到ESCAPE CHARACTERS在部分(和其他地方提到它)ssh(1)-转义字符后.(点)强行终止在客户端的连接。当然,如果只是在ssh运行面板的情况下生成窗格,那将无济于事,但是如果您经常遇到此问题,也许您希望在窗格中运行shell并从其中调用ssh。


我支持您的回答,因为它可以增加价值。但是,这就是转义字符不一定是一个好主意的原因:使用ssh会话连接到具有开放ssh连接的tmux会话。然后,您突然需要考虑如何在第一个ssh连接之外发送转义符以到达内部的。顺便说一句,我通常从shell运行ssh。
0xC0000022L

1
与运行嵌套tmux会话时几乎相同。您可以在外部和内部会话中使用不同的转义字符(无论是ssh还是tmux),或者您只发送两次转义字符-这使它成为单个会话进入嵌套会话(ssh的硬连线行为,可配置)在tmux中)。
彼得
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.