Reputation: 205
I have a script (.sh) and I want it to run in a existing tmux session. I have 1 session with 8 windows in.
Is there a command like tmux a -t session-name
, which also specify the window?
And would a script like this work?
#!/bin/bash
tmux a -t session-name #What ever to write to specify window# java -jar -Xmx4G -Xms4G Spigot.jar
Upvotes: 14
Views: 23680
Reputation: 22362
You can specify the window after the session separated by a colon.
tmux a -t session:window
You can even attach to a specific pane.
tmux a -t session:window.pane
Pane can be a number starting from 0. Window can be a number or name.
man tmux
has more info about different syntaxes allowed for target-session
, target-window
, and target-pane
.
target-window (or src-window or dst-window) specifies a window in the form session:window...
This syntax works on any other command like send-keys
. If it's not working you may be on an older version of tmux and need to upgrade or try an approach suggested in the other answers.
Upvotes: 12
Reputation: 81
For tmux version 2.1 this works
tmux a -t <session-name> \; select-window -t <windowID> \;
Upvotes: 7
Reputation: 530920
You can change the active window of a session before you attach to the session.
tmux -t <session-name> select-window -t <windowID>
tmux a -t <session-name>
You can combine two tmux
commands as well.
tmux -t session-name select-window -t <windowID> \; a
If you really want to run java, presumably you want to create a new window with new-window
, rather than select an existing one with select-window
.
Newer versions of tmux
(at least 1.9; did the above ever work, perhaps in 1.6?) no longer appear to have a -t
option to specify the session to apply commands to. Instead, each individual command specifies the session.
tmux select-window -t <session-name>:<windowID> \; a -t <session-name>
Upvotes: 10