Терминальная команда следует за временем действия другой терминальной команды.

Терминальная команда следует за временем действия другой терминальной команды.

Я хотел бы получить скрипт bash или, что еще лучше, одну строку bash, которая может запускать два приложения на основе терминала параллельно. Я знаю команды &, ;но в моем случае они неприменимы, потому что обе мои команды держат терминал открытым и нуждаются друг в друге для правильной работы. Это может показаться пограничным случаем, но мой конкретный случай использования довольно прост, и я думаю, что это может помочь во многих подобных случаях.

Я пытаюсь проанализировать сообщение с порта USB, который использует протокол SWO, поэтому мой довольно неприятный обходной путь таков:

  1. Откройте терминал 1, запустите openocd -f connect_swo.cfg(терминал 1 зависает)
  2. Откройте терминал два, запустите python3 swo_parser.py(терминал2 зависает, а терминал1 печатает значения)
  3. Затем обе команды завершаются двумя отдельными ctrl+cсигналами.

Ожидаемое решение будет примерно таким:

  1. Запустить волшебную команду, которая открывает два связанных сеанса и обе мои команды в отдельных сеансах
  2. Один сингл ctrl +cзавершает обе команды

PS: Напишите мне в комментариях, следует ли мне перенести вопрос на уровень суперпользователя.

решение1

С помощью GNU Parallel вы сможете сделать следующее:

parallel --tty -j0 ::: 'openocd -f connect_swo.cfg' 'python3 swo_parser.py'

Если GNU Parallel еще не установлен, посмотрите:https://oletange.wordpress.com/2018/03/28/excuses-for-not-installing-gnu-parallel/

решение2

Если openocdTTY абсолютно необходим, подключенный к stdin, и скрипт Python необходимо запустить после openocd, вы можете изменить порядок выполнения, используя sleepдля задержки начала выполнения скрипта:

(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg

Один CtrlCне завершит оба, но это можно обойти с помощью traps. Или что-то вроде:

(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg
kill %1

решение3

Используйте такую ​​программу, какодновременно

Связанный контент