El comando de terminal sigue la vida útil de otro comando de terminal

El comando de terminal sigue la vida útil de otro comando de terminal

Lo que me gustaría lograr es un script bash o, mejor aún, una única línea bash que pueda ejecutar dos aplicaciones basadas en terminal en paralelo. Conozco los comandos &pero ;en mi caso no son aplicables porque ambos comandos mantienen la terminal abierta y se necesitan mutuamente para ejecutarse correctamente. Puede parecer un caso extremo, pero mi caso de uso específico es bastante simple y creo que podría ser de gran ayuda en muchos casos similares.

Lo que estoy tratando de hacer es analizar un mensaje desde un puerto USB que usa el protocolo swo, por lo que mi solución bastante desagradable es:

  1. Abra la terminal uno, ejecute openocd -f connect_swo.cfg(la terminal1 se cuelga)
  2. Abra la terminal dos, ejecute python3 swo_parser.py(la terminal2 se bloquea y la terminal1 imprime valores)
  3. Luego terminando ambos comandos con dos ctrl+cseñales separadas

La solución esperada sería algo como:

  1. Ejecute el comando mágico que abre dos sesiones conectadas y ambos mis comandos en sesiones separadas
  2. Uno solo ctrl +ctermina ambos comandos.

PD: Coméntame si debo pasar la pregunta a superusuario.

Respuesta1

Con GNU Parallel deberías poder hacer esto:

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

Si GNU Parallel aún no está instalado, mire:https://oletange.wordpress.com/2018/03/28/excuses-for-not-installing-gnu-parallel/

Respuesta2

Si openocdes absolutamente necesario que TTY esté conectado a la entrada estándar y el script de Python debe ejecutarse después de openocd, puede invertir el orden de ejecución usando sleeppara retrasar el inicio de la ejecución del script:

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

Un single CtrlCno terminará ambos, pero podría haber una forma de evitarlo usando traps. O algo como:

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

Respuesta3

Utilice un programa comoal mismo tiempo

información relacionada