Я хотел бы написать скрипт для одновременного открытия нескольких программ (серверов) в отдельных терминалах - неважно, какой из них - и назначать разные команды для разных терминалов с командами «посадки» внутри нужного терминала. Это возможно?
Может быть, что-то вроде этого:
- открыть терминал1
- открыть терминал 2 // одновременно с 1.
- command1 // выполнить в терминал1, не открывая новое окно терминала
- command2 // выполнить в терминал2, не открывая новое окно терминала
- ...
Можно ли как-то пометить окна терминала, чтобы команды выполнялись внутри правильного терминала?
Я также хотел бы наблюдать за всеми терминалами, пока их программы работают - у моих программ есть аргумент для печати трассировки / отладки на терминал. Поэтому я хотел бы посмотреть, какие сообщения обмениваются между ними.
ПРИМЕЧАНИЕ: я меньше беспокоюсь о безопасности обмениваемых данных, так как этот скрипт должен служить «симуляцией». Я настроил каждый сервер для запуска с выделенного порта на localhost.
источник
Ответы:
Поскольку вы упоминаете, что решили проблему для конкретной ситуации, ниже приведено решение для общего назначения. Благодаря
xdotool
«S--sync
вариант, он работает довольно надежен в тестах я побежал; Я мог «отправлять» команды в определенные окна терминала, и он работал без исключений.Как это работает на практике
Решение существует из сценария, который может быть запущен с двумя вариантами
-set
и-run
:Чтобы установить (открыть) произвольное количество окон терминала, в этом примере 3:
Откроются три новых терминала, их идентификатор окна запомнен в скрытом файле:
Для ясности я свернул окно терминала, из которого запускал команду :)
Теперь, когда я создал три окна, я могу отправлять команды любому из них с помощью команды run (например):
Как показано ниже, команда выполняется во втором терминале:
Впоследствии я могу отправить команду на первый терминал:
решений на
sudo apt-get update
работы в терминале 1:и так далее...
Как настроить
Скрипту нужны оба
wmctrl
иxdotool
:Скопируйте приведенный ниже скрипт в пустой файл, сохраните его как
target_term
(без расширения!) В~/bin
(создайте каталог,~/bin
если это необходимо.Сделайте скрипт исполняемым (не забудьте) и выйдите из системы, войдите в нее или запустите:
Теперь настройте окна терминала, указав в качестве аргумента количество необходимых окон:
Теперь вы можете «отправлять» команды на любой из ваших терминалов с помощью команды:
Сценарий
Примечания
Скрипт установлен для
gnome-terminal
, но может использоваться для любого терминала (или другой программы), изменивapplication
в разделе заголовка скрипта:Не нужно говорить, что скрипт работает только с настройками терминала (windows), которые были вызваны командой:
Окна терминала будут «помечены» сценарием, как вы упомянули в своем вопросе.
target_term
сеанс, скрытый файл, созданный сценарием, будет просто перезаписан, поэтому нет необходимости удалять его в противном случае.источник