[TIP] Script para lanzar multiples procesos en una misma «Windows Terminal»


Ejemplo de ejecucíon de distintos Microservidios Dapr

A modo de tip, hoy quiero comentar una simple pero potente ventaja de la Windows Terminal, en concreto, poder ejecutar varios procesos en una misma ventana. Bien con diferentes tabs, o bien con distintas secciones/divisiones.

En particular, en el ejemplo de la imagen anterior, podemos ver la ejecución de 6 comandos Dapr en una misma ventana con diferentes tabs. ¡Mi día a día en uno de mis proyectos!

En la mayoria de los proyectos Dapr en los que trabajo o incluso en todos los ejemplos que hemos visto últimamente sobre Dapr, podemos encontrar un fichero start.ps1, con este mismo propósito.

Para crear uno nuevo, creamos un fichero Powershell start.ps1, e incluimos las dos instrucciones siguientes a modo de ejemplo, donde:

  • La primera parte simplemente indica el título de cada uno de los tabs o secciones en la que se ejecutará cada comando.
  • Seguido del doble guión (–), la invocación de powershell (pwsh.exe) con algunas opciones de configuración.
  • Finalmente, el parámetro «-Command«, que es realmente el comando que queremos ejecutar. En este caso, la ejecución de «dapr run …«
$orchestration = '--title "Workflow Orchestration"  -- pwsh.exe -Interactive -NoExit -WorkingDirectory ../../MicroServices/Workflow/Orchestration               -Command dapr run --app-id subpla-workflow-orchestration --dapr-grpc-port 50000 --app-port 3001'

$TechValidation = '--title "Techical Validation"  -- pwsh.exe -Interactive -NoExit -WorkingDirectory ../../MicroServices/Workflow/Processes\TechnicalValidation  -Command dapr run --app-id techvalidation-worker         --dapr-grpc-port 50001 --app-port 5050

Seguidamente, incluimos estas otras dos, que son los parámetros nt (o new-tab), que indican a la Windows Terminal que cree un nuevo tab para cada comando.

$cmd = '-M -w -1 nt ' + $orchestration + '; nt ' + $TechValidation
Dos procesos, dos tabs. Cada uno con su nombre claramente identificativo

Si cambiamos la instrucción anterior, por la siguiente, la ejecución dividirá una misma venta en tantas secciones como procesos/comandos a ejecutar.

$cmd = '-M -w -1 nt ' + $orchestration + '; split-pane ' + $TechValidation
Dos procesos, dos secciones. El titulo de la ventana depende de la sección que tega el foco.

El parámetro «-M» ejecuta la Windows Terminal a pantalla completa, puedes omitirlo si lo prefieres. En cualquier caso, tienes todo el detalle de los argumentos aquí.

Y, para concluir, añadimos la siguiente y última instrucción, que es la encargada de lanzar la Windows Termina (wt) con todas las consideraciones anteriores.

Start-Process wt $cmd

A continuación tenemos el fichero de ejemplo start.ps1, completo.

$orchestration = '–title "Workflow Orchestration" — pwsh.exe -Interactive -NoExit -WorkingDirectory ../../MicroServices/Workflow/Orchestration -Command dapr run –app-id subpla-workflow-orchestration –dapr-grpc-port 50000 –app-port 3001'
$TechValidation = '–title "Techical Validation" — pwsh.exe -Interactive -NoExit -WorkingDirectory ../../MicroServices/Workflow/Processes\TechnicalValidation -Command dapr run –app-id techvalidation-worker –dapr-grpc-port 50001 –app-port 5050 –app-protocol grpc'
#$cmd = '-M -w -1 nt ' + $orchestration + '; nt ' + $TechValidation
$cmd = '-w -1 nt ' + $orchestration + '; split-pane ' + $TechValidation
Start-Process wt $cmd
view raw start.ps1 hosted with ❤ by GitHub

Hemos usado comandos Dapr durante los ejemplos, pero podemos sustituirlos por otros cualesquiera. Lo principal es que sea de utilidad, como al menos creo que lo es para mi.

Happy Coding !!!

Referencias

Anuncio publicitario

Un comentario sobre “[TIP] Script para lanzar multiples procesos en una misma «Windows Terminal»

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.