Я записал сценарий 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. Чтобы постараться не иметь четыре новых окна мечут икру каждый раз, когда я запускаю скрипт, я на самом деле хотел бы их всем, запускаются в других взглядах на единственное новое окно. Там какой-либо путь состоит в том, чтобы сделать это? В руководстве нет ничего.
Я принял бы решение, которое использует другой терминал.
Во-первых, откройте экземпляр разделителя, разделите его на 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
Теперь, измените свой сценарий удара для замены 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
который работает, пока Вы не говорите этому останавливаться), Вам нужно COMMAN; bash
как команда так, чтобы была запущена новая оболочка. Иначе команда будет работать, и оболочка сразу выйдет. Вот почему я имею ; bash
после каждой команды кроме top
в y сценарии.
Поскольку вы упомянули, что примете альтернативное решение, рассмотрите возможность использования gnome-terminal
. В прошлом я писал для этого сценарии, которые позволяют открывать окно с несколькими вкладками и запускать собственные команды. Посмотрите, например, на это: https://askubuntu.com/a/863179/295286
Что касается самого терминатора, кажется, что он позволяет создавать новые вкладки для уже существующего окна через [ 111], но я не вижу возможности вызывать окно с несколькими вкладками с отдельными командами, кроме как с помощью опции --layout
. Конечно, вы можете автоматизировать это, так как все макеты помещаются в файл ~/.config/terminator/config
, так что вы можете написать собственный файл конфигурации. Я постараюсь написать один, если не забуду, но я думаю, что gnome-terminal
подход гораздо проще и именно то, что вы хотите.
Терминатор имеет предпочтение layout
, которое можно использовать с определенным количеством вкладок, разделений и назначать им определенные цветовые профили. Что вы хотите сделать, это открыть окно, добавить сколько угодно вкладок, а затем щелкнуть правой кнопкой мыши, перейти на вкладку «Предпочтения», макеты и нажать кнопку добавления
Как только вы закончите редактирование макета, сохраните его. Теперь вы можете вызвать use terminator -l <Layout Name>
, чтобы вызвать окно с этим точным набором вкладок. Например, из моего скриншота видно, что у меня есть макет custom
, поэтому я бы использовал terminator -l custom