在shell脚本

时间:2015-10-29 23:04:35

标签: bash shell unix vagrant tmux

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

我按照StackOverflow post中指定的答案来完成相同的操作。

我收到错误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

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:9)

启动一个shell,并向其发送vagrant,以便您可以看到错误。

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

C-m表示点击返回。

答案 2 :(得分:0)

新的、分离的、命名的和在默认 shell 中执行的命令:

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

附加使用:

tmux attach-session -t apiserver