Cómo ejecutar procesos de bash en paralelo en Mac
Estoy intentando ejecutar algunos comandos a través del script de bash en Mac.
Aquí está mi script
#!/bin/bash
testDirectory='/Users/jxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/tests/pagination-integration.test.js'
deleteScript='/Users/xxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/scripts/test-delete-table.sh'
echo "$testDirectory"
cd ../
sls offline start
open -a Terminal.app $deleteScript
RUNNING_PID=$!
kill ${RUNNING_PID}
Problema
– sls offline start
requerirá mfa y luego registrará la salida continuamente en la terminal (que es necesaria)
– Pero quiero ejecutar el script de eliminación en una terminal separada una vez que se inicie sls offline
, pero no se está ejecutando en la nueva terminal con el script actual, de alguna manera solo comienza después de que se mata el proceso de sls
– Una vez que se complete el script de eliminación, matar el proceso sls offline start
davy.ai
Solución:
Puede utilizar el comando
open
con la opción-n
para abrir una nueva ventana de Terminal y ejecutar el scripttest-delete-table.sh
en ella. Aquí está el script modificado:Cambios realizados:
– Se agrega el símbolo
&
después desls offline start
para ejecutarlo en segundo plano.– Se utiliza
SLSPID
para almacenar el ID del proceso del comandosls offline start
.– El comando
open
ahora incluye la opción-n
para abrir una nueva ventana de Terminal.– Se utiliza el comando
wait
para esperar a que el procesosls offline start
termine antes de finalizarlo.Esto debería abrir una nueva ventana de Terminal ejecutando el script
test-delete-table.sh
, mientras que el procesosls offline start
sigue ejecutándose en la ventana de Terminal original. Una vez que el scripttest-delete-table.sh
complete su ejecución, el procesosls offline start
se finalizará automáticamente.