在shell脚本中启动一个新的tmux会话并将其分离

Swa*_*udi 8 unix bash shell tmux vagrant

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

我按照StackOverflow帖子中指定的答案来完成相同的操作.

我收到了错误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
Run Code Online (Sandbox Code Playgroud)

mlv*_*mlv 10

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

tmux new-session -d -s rbt123
tmux send-keys 'vagrant up' C-m
tmux detach -s rtb123
Run Code Online (Sandbox Code Playgroud)

C-m手段回车.

  • 你好,我想问一下,为什么包含第三个分离命令?会话已经独立运行。有必要吗? (5认同)
  • `tmux send-keys -t rbt123 'vagrant up' Cm`,如果有多个会话正在运行。 (3认同)

pet*_*ohn 9

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