我想编写一个脚本,用于在不同的终端中同时打开多个程序(服务器)——哪个终端无关紧要——并将不同的命令分配给不同的终端,并在正确的终端内“登陆”命令。这可能吗?
也许,像这样:
- 打开终端1
- 打开终端 2 //与 1 同时。
- command1 //在terminal1中执行,不打开新的终端窗口
- command2 //在terminal2中执行,不打开新的终端窗口
- ...
我可以以某种方式标记终端窗口以便在正确的终端内执行命令吗?
我还想在程序运行时观察所有终端——我的程序有一个参数用于将跟踪/调试打印到终端。所以我想看看他们之间交换了什么消息。
注意:我不太关心交换数据的安全性,因为这个脚本应该作为一个“模拟”。我已将每个服务器配置为从本地主机上分配的端口运行。
既然你提到你针对你的具体情况解决了问题,下面是一个通用的解决方案。多亏了
xdotool
的--sync
选项,它在我运行的测试中工作得相当可靠;我可以将命令“发送”到特定的终端窗口,并且它毫无例外地完美运行。它在实践中是如何运作的
该解决方案存在于脚本中,可以使用两个选项
-set
和运行该脚本-run
:要设置(打开)任意数量的终端窗口,在此示例 3 中:
将打开三个新终端,它们的窗口 ID 被记录在一个隐藏文件中:
为清楚起见,我最小化了运行命令的终端窗口 :)
现在我创建了三个窗口,我可以使用运行命令向其中任何一个发送命令(例如):
如下图,命令在第二个终端运行:
随后,我可以向第一个终端发送命令:
在
sudo apt-get update
终端 1 中运行:等等...
如何设置
该脚本同时需要
wmctrl
和xdotool
:将下面的脚本复制到一个空文件中,将其保存为
target_term
(无扩展名!)在(如有必要,~/bin
创建目录。~/bin
使脚本可执行(不要忘记)并注销/登录或运行:
现在设置您的终端窗口,将所需窗口的数量作为参数:
现在您可以使用以下命令将命令“发送”到您的任一终端:
剧本
笔记
该脚本是为 设置的,但可以通过更改脚本头部部分的
gnome-terminal
来用于任何终端(或其他程序) :application
不用说该脚本仅适用于命令调用的终端设置(Windows):
然后终端窗口将被脚本“标记”,就像您在问题中提到的那样。
target_term
会话,脚本创建的隐藏文件将被简单地覆盖,因此无需删除它。