tmux - 附加到会话并指定窗口

use*_*440 6 bash session centos sh tmux

我有一个脚本(.sh),我希望它在现有的tmux会话中运行.我有1个会话,8个窗口.

是否有命令tmux a -t session-name,也指定窗口?

像这样的剧本会起作用吗?

#!/bin/bash tmux a -t session-name #What ever to write to specify window# java -jar -Xmx4G -Xms4G Spigot.jar

Des*_*tar 10

您可以在会话之后指定窗口,并用冒号分隔。

tmux a -t session:window 
Run Code Online (Sandbox Code Playgroud)

您甚至可以附加到特定的窗格。

tmux a -t session:window.pane
Run Code Online (Sandbox Code Playgroud)

Pane 可以是从 0 开始的数字。Window 可以是数字或名称。 man tmux有关于target-sessiontarget-window和允许的不同语法的更多信息target-pane

target-window(或 src-window 或 dst-window)以 session:window... 形式指定一个窗口

此语法适用于任何其他命令,例如send-keys. 如果它不起作用,您可能使用的是旧版本的 tmux,需要升级或尝试其他答案中建议的方法。


che*_*ner 6

您可以附加到会话之前更改会话的活动窗口.

tmux -t <session-name> select-window -t <windowID>
tmux a -t <session-name>
Run Code Online (Sandbox Code Playgroud)

您也可以组合两个tmux命令.

tmux -t session-name select-window -t <windowID> \; a
Run Code Online (Sandbox Code Playgroud)

如果你真的想要运行java,可能你想创建一个新窗口new-window,而不是选择现有的窗口select-window.


较新版本tmux(至少1.9;上述工作,可能是1.6?)似乎没有-t选项来指定应用命令的会话.相反,每个单独的命令指定会话.

tmux select-window -t <session-name>:<windowID> \; a -t <session-name>
Run Code Online (Sandbox Code Playgroud)

  • 我在“tmux 2.2”上收到“tmux:非法选项 -- t”。 (4认同)
  • 我再也没有旧版本的`tmux`来检查发生了什么变化.但是在2.2中,我认为你只需将会话指定为目标窗口的一部分:`tmux select-window -t <session>:<windowID>`. (2认同)
  • 在连接之前进行切换的缺点是您会影响同一会话的任何其他客户端。我的目标通常是附加一个新客户端,然后切换到同一会话的_不同窗口_。 (2认同)

小智 5

对于 tmux 2.1 版,这有效

tmux a -t  <session-name> \; select-window -t <windowID> \;
Run Code Online (Sandbox Code Playgroud)