首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tmux新窗口--等到会话结束?

tmux新窗口--等到会话结束?
EN

Unix & Linux用户
提问于 2016-07-01 07:07:55
回答 1查看 2.7K关注 0票数 1

我正在做以下事情(这只是一个例子,逗号比较复杂):

代码语言:javascript
复制
xterm -fa "Inconsolata" -e tmux new-session -s alpha &
disown %%
tmux new-window -t alpha bash
tmux new-window -t alpha zsh 

当我在终端中输入它时,...which工作得很好,给了我一个带有三个窗口的tmux会话的xterm。但是如果我把它放在一个脚本里,它就会停止工作;

代码语言:javascript
复制
 no server running on /tmp/tmux-1153/default
 no server running on /tmp/tmux-1153/default

错误,在新的tmux会话alpha中只有一个窗口。

经过一些实验之后,我发现如果我添加一个

代码语言:javascript
复制
sleep 5

(或类似的)在disowntmux new-window命令之间。很明显,xterm在运行这个命令之前还没有完成设置,所以tmux new-window在创建会话之前就已经运行了,除非我在那里延迟了。

很管用,但不雅致。是否有一种方法可以让tmux等到会话alpha结束?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-07-01 07:17:42

您可以通过两种方式来实现这一点:

  1. 使用sleep方法。除了选择太短的时间有时失败之外,我认为使用sleep没有什么问题。要想防伪,就用时间吧!tmux有会话;做睡眠1;完成或同时!tmux有会话-t alpha;做睡眠1;完成
  2. 使用类似于xtoolwait的方法,在后台启动X客户机(终端模拟器),并在映射窗口时返回。

如果使用第二个选项(这可能是最好的),请记住在启动终端的命令末尾移除&,这对于disown作业来说也是不必要的。

该命令变成:

代码语言:javascript
复制
xtoolwait xterm -fa "Inconsolata" -e tmux new-session -s alpha
tmux new-window -t alpha bash

如果xtoolwait还没有安装在您的Unix上,那么它很可能可以作为一个包使用(它已经存在很久了)。使用您选择的软件包管理器来安装它。

编辑:从注释中可以看出,即使使用了tmux,在终端映射其窗口之后,似乎也需要很长时间才能生成xtoolwait。因此,在这种情况下,我会一直循环一个sleep 1调用,直到tmux会话存在为止。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/293233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档