我编写了一个 Bash 脚本,运行四个长时间运行(每个 20-30 分钟)的进程:
terminator -T "<NAME-1>" -e "<COMMAND-1>" &
terminator -T "<NAME-2>" -e "<COMMAND-2>" &
terminator -T "<NAME-3>" -e "<COMMAND-3>" &
terminator -T "<NAME-4>" -e "<COMMAND-4>" &
(其中<COMMAND-X>
是事先由几行 Bash 创建的值,包括对 Kubernetes 的调用)。
当我运行脚本时,每个进程都会在一个新的 Terminator 窗口中打开。为了避免每次运行脚本时都会生成四个新窗口,我实际上希望它们都从单个新窗口的不同视图中启动。有什么办法吗?手册。
我会接受使用不同终端的解决方案。
答案1
首先,打开一个终结器实例,根据需要将其分成 4 个窗格,然后另存为新布局(确保关闭所有打开的终端窗口,除了使用新配置文件设置的窗口)。对于 4 个窗格中的每一个,添加一个自定义命令,但只需添加文本COMMAND1
等COMMAND2
。将新布局另存为foo
(或其他)。此时,您的布局~/.config/terminator/config
应该看起来像这样:
[global_config]
enabled_plugins = LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler
focus = mouse
suppress_multiple_term_dialog = True
title_use_system_font = False
[keybindings]
[layouts]
[[default]]
[[[child0]]]
fullscreen = False
last_active_term = ad14f6cd-bcc3-4a80-9852-3fe64f7fc2eb
last_active_window = True
maximised = False
order = 0
parent = ""
size = 735, 474
title = sometitle
type = Window
[[foo]]
[[[child0]]]
fullscreen = False
last_active_term = 18ebf009-c427-4c2f-8017-78c379a72d31
last_active_window = True
maximised = False
order = 0
parent = ""
position = 2730:254
size = 735, 474
title = NAME-1
type = Window
[[[child1]]]
order = 0
parent = child0
position = 237
ratio = 0.5
type = VPaned
[[[child2]]]
order = 0
parent = child1
position = 368
ratio = 0.500680272109
type = HPaned
[[[child5]]]
order = 1
parent = child1
position = 368
ratio = 0.500680272109
type = HPaned
[[[terminal3]]]
command = COMMAND1
order = 0
parent = child2
profile = default
title = NAME-1
type = Terminal
uuid = 01e46a5a-0a12-4861-a81e-e376af6041a7
[[[terminal4]]]
command = COMMAND2
order = 1
parent = child2
profile = default
type = Terminal
uuid = 094d544d-944c-48a7-9960-00370253e799
[[[terminal6]]]
command = COMMAND3
order = 0
parent = child5
profile = default
type = Terminal
uuid = fe19f601-1963-4af7-8870-f90e289d3d27
[[[terminal7]]]
command = COMMAND4
order = 1
parent = child5
profile = default
type = Terminal
uuid = 18ebf009-c427-4c2f-8017-78c379a72d31
[plugins]
[profiles]
[[default]]
cursor_color = "#aaaaaa"
font = Monaco 11
scrollback_infinite = True
scrollback_lines = 5000
use_system_font = False
现在,修改你的 bash 脚本以替换COMMANDN
你需要运行的实际命令:
#!/bin/bash
## change these to whatever you actually need
command1="echo one; bash"
command2="echo two; bash"
command3="tail -f /var/log/messages; bash"
command4="top"
## Modify terminator's config
sed -i.bak "s#COMMAND1#$command1#; s#COMMAND2#$command2#; s#COMMAND3#$command3#; s#COMMAND4#$command4#;" ~/.config/terminator/config
## Launch a terminator instance using the new layout
terminator -l foo
## Return the original config file
mv ~/.config/terminator/config.bak ~/.config/terminator/config
运行该脚本将打开一个带有 4 个窗格的新终端窗口,每个窗格运行一个命令。
重要的:如果命令是运行后退出的命令(而不是一直top
运行直到您告诉它停止的命令),则需要作为命令,以便启动新的 shell。否则,命令将运行,shell 将立即退出。这就是为什么我在每个命令后面COMMAN; bash
都有,但y 脚本除外。; bash
top
答案2
选择:
既然您提到您会接受替代解决方案,请考虑使用gnome-terminal
。过去我曾为此编写过脚本,允许生成具有多个选项卡的窗口并运行自己的命令。例如,请参见:https://askubuntu.com/a/863179/295286
至于 Terminator 本身,它似乎允许通过--new-tab
选项为现有窗口生成新选项卡,但除了通过--layout
选项之外,我看不到使用单独命令生成多选项卡窗口的选项。当然,您可以自动执行此操作,因为布局都进入了~/.config/terminator/config
文件,所以您可以写出自定义配置文件。如果我不会忘记的话,我会尝试写一个,但我认为gnome-terminal
方法要简单得多,而且正是您想要的。
原始答案
Terminator 有一个layout
首选项,您可以使用该首选项来设置特定数量的选项卡、拆分,并为它们分配特定的颜色配置文件。您需要做的是打开窗口,添加任意数量的选项卡,然后右键单击,转到首选项、布局选项卡,然后单击添加按钮
编辑完布局后,保存它。现在您可以调用 useterminator -l <Layout Name>
来生成具有该选项卡集的窗口。例如,从我的屏幕截图中您可以看到我有custom
布局,所以我会使用terminator -l custom