我有一个.sh
文件,它为tmux创建一个新会话并添加一些窗口,该文件只应在没有会话时使用。例如:
tmux new-session -A -s `ax` -n ui -d
# add windows and other magic here...
我想阻止创建具有相同名称的会话并重新创建窗口,以防.sh
文件被意外重新执行并且会话正在运行。
基本上我需要的是:
如果该会话名称不存在tmux会话ax,请创建该会话。如果我没有连接到tmux会话,请附加到该会话。
我想知道如何检测tmux会话是否存在以及是否附加了tmux,在此示例中ax
正在运行并阻止执行.sh
脚本,或者如果会话未退出,我想重新执行.sh
脚本。
目前我正在考虑使用:
tmux ls | grep attached
我想知道你是否知道更好的方法。
有点难以理解你的意思。我把它解释为
如果该会话名称不存在tmux会话,请创建它。如果我没有连接到tmux会话,请附加到该会话名称。
如果这是错误的,请评论。
我的脚本中有类似的功能。我所做的就是
tmuxstart() {
tmux ls | grep "sess" && { tmux a -t sess; return 0; }
#rest of tmux script to create session named "sess"
tmux a -t sess
}
如果名为“sess”的会话存在,那么我在该行上执行接下来的2个分组命令(附加到它并退出该函数)。
请注意,我不必检查我是否已经附加到该功能。 tmux会自动执行此操作。如果您尝试在会话期间附加到tmux会话,它将响应
sessions should be nested with care, unset $TMUX to force
而不是递归附加。 Tmux足够聪明,可以防止我们在脚下射击。
您可以使用$TMUX
来检测是否已经附加,我的代码是:
if [ ! "$TMUX" ]; then
tmux attach -t main || tmux new -s main
fi