我有一个.sh
文件,该文件为tmux创建了一个新会话并添加了一些窗口,仅当不存在会话时才应使用该文件。例如:
tmux new-session -A -s `ax` -n ui -d
# add windows and other magic here...
如果要意外地重新执行.sh
文件并且该会话正在运行,我想防止创建具有相同名称的会话并重新创建窗口。
基本上我需要的是:
如果该会话名称不存在tmux会话斧头,请创建该会话。如果 我没有加入tmux会话,请附加到该会话。
我想知道如何检测tmux会话是否存在以及是否附加了tmux,在此示例中ax
正在运行并阻止执行.sh
脚本或会话没有退出,我想重新执行.sh
脚本。
当前我正在考虑使用:
tmux ls | grep attached
我想知道您是否知道更好的方法。
答案 0 :(得分:1)
很难理解您的意思。我将其解释为
如果使用该会话名称的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足够聪明,可以防止我们用脚射击。
答案 1 :(得分:0)
您可以使用$TMUX
来检测是否已附加,我的代码是:
if [ ! "$TMUX" ]; then
tmux attach -t main || tmux new -s main
fi