启动一个新的 tmux 会话并分离它,所有这些都在 shell 脚本中

Starting a new tmux session and detaching it, all inside a shell script

我正在尝试创建一个新的 tmux 会话并执行命令 'vagrant up'。 'Vagrant up' 需要 3 个多小时,所以我想分离会话,以便稍后返回并通过附加回同一会话来检查该命令的状态。

我按照 中指定的答案完成了同样的事情。

我收到错误 no session found。这是我的代码:

    $cat tmux_sh.sh
    #!/bin/bash
    echo "step 1"
    tmux new-session -d -s rtb123 'vagrant up'
    echo "step 2"
    tmux detach -s rtb123

    $./tmux_sh.sh
    step 1
    step 2
    session not found: rtb123

您在创建会话时使用了 -d 开关。这意味着会话将开始分离,因此您不需要使用分离命令。此外,如果您尝试分离时您的会话不是运行,则意味着它不再存在,因此您的命令可能已退出。

启动一个shell,并将vagrant发送到它,这样你就可以看到错误。

tmux new-session -d -s rbt123
tmux send-keys 'vagrant up' C-m
tmux detach -s rtb123

C-m表示命中return.

新建、分离、命名并默认执行命令 shell:

tmux new-session -d -s apiserver 'java -cp /root/apiserver.jar com.package.EntryPoint'

附加使用:

tmux attach-session -t apiserver