unix 启动新的tmux会话并将其分离,所有这些都在shell脚本中完成

sulc1iza  于 2023-02-04  发布在  Unix
关注(0)|答案(3)|浏览(110)

我正在尝试创建一个新的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
jfgube3f

jfgube3f1#

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

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

C-m表示按回车。

gstyhher

gstyhher2#

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

ovfsdjhp

ovfsdjhp3#

新的、已分离的、已命名的和在默认shell中执行的命令:
tmux新会话-d -s apiserver 'java -cp/根目录/apiserver. jar com.包入口点'
要连接,请用途:
tmux连接会话测试服务器

相关问题