0

I'm looking for a way to wait execution then detach from current tmux session through bash command line.

For example currently I'm trying to build a deployment automation command line tool. It should does:

  • create a new tmux session, attache to it,
  • run a file (e.g. build) showing user its stdout,
  • when its execution ends detach from the session,
  • and capture-pane to if the stdout is finished in a success way or an error way then if it's success is true continues to the next file (e.g. launch) and showing user its stdout creating and attaching to a new tmux session, and so on.

I tried the followings, however it didn't work as it doesn't wait for the previous commands but immediately detaches. (Note: assume the build.sh takes tens of seconds to execute with its stdout)

tmux a -t tmp \; \
    set-buffer ". /root/pg/myapp/production/.deploy/remote/build.sh;" \; paste-buffer \; send-keys C-m \; \
    set-buffer "tmux wait-for -S done;" \; paste-buffer \; send-keys C-m \; \
    set-buffer "tmux wait-for done;" \; paste-buffer \; send-keys C-m \; \
    detach \; 
tmux a -t tmp \; \
    set-buffer ". /root/pg/myapp/production/.deploy/remote/build.sh;" \; paste-buffer \; send-keys C-m \; \
    send-keys C-b \; \
    send-keys d \; 

versions:

# tmux -V
tmux 3.0a

# bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)

Thanks.

2
  • 1
    To be honest, that second paragraph with your "flow" is a bit hard to follow. I might suggest breaking that out into bullet points for clarity. Commented Mar 12, 2022 at 2:26
  • fixed. thanks for the suggestion Commented Mar 12, 2022 at 2:29

1 Answer 1

0

Solved the issue by the following:

tmux a -t tmp \; \
            set-buffer "sleep 1;" \; paste-buffer \; send-keys C-m \; \
            set-buffer "tmux detach;" \; paste-buffer \; send-keys C-m \;

Simply use tmux detach bash command instead of detach tmux command.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .