O comando do terminal segue a vida útil de outro comando do terminal

O comando do terminal segue a vida útil de outro comando do terminal

O que eu gostaria de alcançar é um script bash ou, melhor ainda, uma única linha bash que possa executar dois aplicativos baseados em terminal em paralelo. Estou ciente dos comandos &, mas ;no meu caso eles não são aplicáveis ​​porque ambos os meus comandos mantêm o terminal aberto e precisam um do outro para funcionar corretamente. Pode parecer um caso extremo, mas meu caso de uso específico é bastante simples e acho que pode ser útil em muitos casos semelhantes.

O que estou tentando fazer é analisar uma mensagem de uma porta USB que usa o protocolo swo, então minha solução bastante desagradável é:

  1. Abra o terminal um, execute openocd -f connect_swo.cfg(terminal1 trava)
  2. Abra o terminal dois, execute python3 swo_parser.py(terminal2 trava e terminal1 imprime valores)
  3. Em seguida, encerrando ambos os comandos com dois ctrl+csinais separados

A solução esperada seria algo como:

  1. Execute o comando mágico que abre duas sessões conectadas e ambos os meus comandos nas sessões separadas
  2. Um único ctrl +cencerra ambos os comandos

PS: Comente-me se devo mover a pergunta para superusuário

Responder1

Com o GNU Parallel você poderá fazer isso:

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

Se o GNU Parallel ainda não estiver instalado, veja:https://oletange.wordpress.com/2018/03/28/excuses-for-not-installing-gnu-parallel/

Responder2

Se openocdfor absolutamente necessário TTY conectado ao stdin, e o script Python precisar ser executado depois openocd, você pode reverter a ordem de execução usando sleeppara atrasar o início da execução do script:

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

Um single CtrlCnão encerrará ambos, mas pode haver uma maneira de contornar isso usando traps. Ou algo como:

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

Responder3

Use um programa comosimultaneamente

informação relacionada